メールの削除の動作諸々No.01206
hajimet さん 17/03/15 14:03
 
いつも便利に活用させて頂いております
この度は掲題につき
#設定で変更できそうな場合はご教示下さい

現状:
メールリスト枠のエントリがアクティブの場合
 Delete→ゴミ箱に移動(デフォルトでは警告無し)
 Shift+Delete→ゴミ箱に移動しないで削除(警告つき)
フォルダツリー枠のエントリがアクティブの場合
 Delete→ゴミ箱に移動(デフォルトでは警告無し)
   ※非アクティヴでもリスト上選択はされている
 Shift+Delete→動作無し
メール表示枠がアクティブの場合
 Delete→ゴミ箱に移動(警告つき;【設定D】による)
  ※画面の状況が同じなのに
   上記と動作が違うので
   「警告が出た→移動無し削除か!?」との誤認を誘う
   ので作業をやり直すことが多くなる
 Shift+Delete→ゴミ箱に移動しないで削除(警告つき)
エディタ窓がアクティブの場合
 Delete→ゴミ箱に移動(警告つき;【設定D】による)
 Shift+Delete→動作無し

希望としては
1(中程度の希望)
 Shift+Deleteを他の2つの場合でも効くようにしてほしい
2(弱い希望)
 「削除」という用語が、ゴミ箱への移動と、削除の
 両方に使われているため、警告表示が出たときに、
 それがどちらを意味しているのか分かりにくいので
 なにがしか工夫が出来たらと思う
3(弱い希望)
 “メールエディタ上で「このメールを削除」を実行したとき”
 の確認メッセージ3の【設定D】のカバー範囲が、
 「エディタ窓がアクティブの場合」と
 「メール表示枠がアクティブの場合」に
 跨がって有効なのに、
 Shift+Deleteの動作は跨がっていないため若干混乱する
 #実際に設定を変更して確かめないと予想がつかない
4(中程度の希望)
 “メールエディタ上で「このメールを削除」実行”直後に
 Ctrl+Zによるundoを有効にしてほしい
があります。

[ ]
RE:01206 メールの削除の動作諸々No.01207
秀まるお2 さん 17/03/15 15:52
 
 設定Dっていうのが何か分からないのですが、とりあえず、僕の所とhajimet
さんの所とで動作が多少違うようです。

> フォルダツリー枠のエントリがアクティブの場合
>  Delete→ゴミ箱に移動(デフォルトでは警告無し)
>    ※非アクティヴでもリスト上選択はされている
>  Shift+Delete→動作無し

 フォルダツリー枠がアクティブの場合は、DeleteキーもShift+Deleteキーも効
かないはずだと思います。少なくとも僕の所では効かないです。

 もし効くとしたら、何かそのキーに独自にキー割り当てされてるせいじゃない
でしょうか。

 フォルダ枠がアクティブな時にDeleteキーが効かないのは一応訳というか、以
前苦情(間違ってフォルダを削除した等)が届いて、あえて効かなくしています。
今さら昔の仕様に戻すことは、すみませんが出来ないです。

> エディタ窓がアクティブの場合
>  Delete→ゴミ箱に移動(警告つき;【設定D】による)
>  Shift+Delete→動作無し

 設定Dが不明ですが、とりあえず僕の所というか、標準の設定だとDeleteキー
でメールの削除にはならないです。

>  「削除」という用語が、ゴミ箱への移動と、削除の
>  両方に使われているため、警告表示が出たときに、
>  それがどちらを意味しているのか分かりにくいので
>  なにがしか工夫が出来たらと思う

 たしかに「削除」コマンドを実行して、出てくる確認メッセージが「ゴミ箱へ
移動してもいいですか?」みたいに出てくるのは分かりにくいとは思うんですが、
例えば同じ「削除」コマンドでも、Shiftキーを押さえながら実行すると、本当
の「削除」になったりするので、その辺、うまく切り分けるのが難しかったりし
ます。

 (Windowsのエクスプローラ上でファイル削除する時もそうですが)

 なので、「削除」と表示しつつ、確認メッセージ上では「ゴミ箱に移動」と出
てきてしまうのは仕方がないかなぁと思います。

 あと、もしもDeleteキーやShift+Deleteキーについてもっと細かいカスタマイ
ズをしたい場合(アクティブな枠が何かによって動作を変えたい場合)、それら
のキーに対してマクロを割り当てておいて、そのマクロの中で、アクティブ枠が
何かを判断して動作を変えることは可能です。必要なら、例えばどの枠が
アクティブならどうしたい的なことを教えていただければ、そのサンプルマクロ
を作って差し上げることは出来るかと思います。

[ ]
RE:01206 メールの削除の動作諸々No.01208
ぴよ さん 17/03/15 21:21
 
横から失礼します。

> “メールエディタ上で「このメールを削除」を実行したとき”
> の確認メッセージ3の【設定D】のカバー範囲が、
> 「エディタ窓がアクティブの場合」と
> 「メール表示枠がアクティブの場合」に
> 跨がって有効なのに、

とあるので、設定Dは多分、上級者向け - 確認メッセージ - 確認メッセージ3の
【メールエディタ上で「このメールを削除」を実行したとき】
だと思うのですが、三種類の確認メッセージを混同されていませんか?

・ゴミ箱以外でDeleteしたとき
「選択されたメール(1通)をゴミ箱に移動してもいいですか?」
※【メールを普通に削除(ゴミ箱に移動)する時】がオンの場合のみ

・ゴミ箱以外でShift+Delete、もしくはゴミ箱でDeleteしたとき
「選択されたメール(1通)を削除してもいいですか?」

・メールエディタのメニューバーで削除ボタンを押したとき
「このメールをゴミ箱に移動してもいいですか?」
※【メールエディタ上で「このメールを削除」を実行したとき】がオンの場合のみ

ですから【メールエディタ上で「このメールを削除」を実行したとき】がオンな
だけでは、メール表示枠でのDeleteに確認メッセージは表示されないはずです。

> フォルダツリー枠のエントリがアクティブの場合
>  Delete→ゴミ箱に移動(デフォルトでは警告無し)
>  Shift+Delete→動作無し
> エディタ窓がアクティブの場合
>  Delete→ゴミ箱に移動(警告つき;【設定D】による)
>  Shift+Delete→動作無し

キー割り当てでDeleteを「(メールの)削除」に割り当てるとそのようになります。

キー割り当てではCtrl/Shift/Altの組み合わせ違いは別の割り当てになります。
例えばDeleteで削除、Shift+Deleteでフォルダへ移動といった割り当てが可能です。
Shift+Deleteも再現するなら、マクロや「メールを完全に削除」的なものを
Shift+Deleteに別途割り当てることになるのではないでしょうか。
※キー割り当てに「メールを完全に削除」なるコマンドは存在しません

>  「削除」という用語が、ゴミ箱への移動と、削除の
>  両方に使われているため、警告表示が出たときに、
>  それがどちらを意味しているのか分かりにくいので
>  なにがしか工夫が出来たらと思う

冒頭でまとめたように、警告表示では「ゴミ箱に移動してもいいですか?」と
「削除してもいいですか?」が使い分けられているので、そこに注目してはいかがで
しょう。
「完全に削除してもいいですか?」とでも書けばよりわかりやすいかもしれませんが。

[ ]
RE:01208 メールの削除の動作諸々No.01210
hajimet さん 17/03/15 23:28
 
ひでまるお2さん びよさん コメントありがとうございます。
>キー割り当てでDeleteを「(メールの)削除」に割り当てるとそのようになります。
があたりでした
これはデフォルトじゃなかったですね すっかりわすれておりました

デフォルトでは
「Delete」キーが「(メールの)削除」として機能するのは
・メールリスト枠のエントリがアクティブの場合
・メール閲覧枠がアクティブの場合

「(メールの)削除」はそれに加えて
・フォルダツリーがアクティブの場合
・メールエディタ窓がアクティブの場合(閲覧中)
でも機能する若干拡張版の削除コマンドという位置づけ

理解してみました。
これにより私の混乱は大分整理がつきます。

そうすると、ぴよさん御指摘の通り、
「メールを完全に削除」のマクロを検討することで
1点は解消しそうです。

もう一つは、メールエディタ窓でメールを閲覧中に
「(メールの)削除」コマンドでエントリをゴミ箱への移動した際に、
undoをする手法について、です。
本体窓に移動すれば可能ですが、その手間を省く手法を検討したいです。

>冒頭でまとめたように、警告表示では「ゴミ箱に移動してもいいですか?」と
>「削除してもいいですか?」が使い分けられているので、そこに注目してはいかがで
>しょう。
>「完全に削除してもいいですか?」とでも書けばよりわかりやすいかもしれませんが。
につきましては、
とりあえず、確認メッセージ3の【設定D】で平時警告を出さないようにして
警告は「完全に削除」の場合にだけ出る環境で自身を条件付けし、
事象の意味の単純化した運用を試みようと思っています。

現状では「削除してもいいですか?」が、
ゴミ箱への移動して良いですか?の意味にも感じられるため、
危うくしてはいけない場合にもEnterキーを押下してしまいがちで困っておりました。
「完全に削除」がログも消す意味で使われているので、
そのフレーズが使えないんだと思うのですが、
たとえば「ゴミ箱への移動せずに削除してもいいですか?」ならどうでしょう。
ちなみに、ファイラの場合はその動作を「完全に削除」と呼称しています。
たのソフトとの整合性も必要かと思いますので、
「削除(ゴミ箱に移動)」「完全に削除」「ログも含めて完全に削除」という
使い分けなら認知負荷が少なくて済むかも知れませんが如何でしょう。

[ ]
RE:01210 メールの削除の動作諸々No.01212
秀まるお2 さん 17/03/16 09:54
 
 エディタ・ウィンドウ上でのundoについて僕の考えをコメントさせていただき
ますと・・・


 僕が思うには、そもそも的にDeleteキーに「メールの削除」をキー割り当てし
てるせいで、間違ってメールを削除(というか、ゴミ箱に移動)してしまうケー
スが多くて、そのせいでundoの必要性が出てきてしまってるような気がします。

 なので、やはりエディタウィンドウ上では、Deleteキーでメール削除はやめた
方がいいんじゃないかと思います。

 お勧めとしては、やはり標準のキー割り当てのままで使っていただいた方がい
いような気がします。一応、標準の動作としては、間違ってメールが無くなった、
みたいな事故がなるべく無いようにしてるつもりなので。

 利便性を高めればミスが増えて、ミスを減らそうとすれば利便性が犠牲になる
ってのは仕方がないと思います。セキュリティ対策とか防犯対策とかもそうだと
思いますけども。

 どうしても現状でのDelete/Shift+Deleteキーでの動作が気に入らなくて、な
にがなんでも変えたいってことでしたら、適当なマクロを作って、Shift+Delete
およびDeleteキーに割り当てておくような作戦になります。たぶん簡単に出来そ
うな気がするので、一回トライしてみます。


[ ]
RE:01212 メールの削除の動作諸々No.01213
秀まるお2 さん 17/03/16 11:10
 
 マクロのサンプルというか、簡単な例を作ってみました。
 秀丸メール本体側とエディタ側でマクロ登録した上で、Deleteキーに割り当てれば、
Deleteキーを押したタイミングで実行されます。
 Shift+Deleteキーでも実行したい場合は、2重にマクロ登録した上で、1つをDele
teキー、もう1つをShift+Deleteキーに割り当てればいいかと思います。
 マクロの中身はあくまでサンプルなので、確認メッセージを出したい/出したくな
いとか、あるいは「ゴミ箱へ移動」なのか「削除」なのか、その辺はご自身で好きな
ように書き換えてもらえたらいいんじゃないかと思います。Shiftキーの状態やエデ
ィタ上か本体上か、アクティブな枠が何か、などで好きなようにカスタマイズできる
と思います。

 Move関数やDelete関数についてはヘルプの方を参考にして欲しいです。


// DeleteCustom.mac
//
// DeleteキーおよびShift+Deleteキーに割り当てて使ってもらう用のマクロ。
//
// メールの削除の実行方法:
//  「メールの削除」コマンド(秀丸メール本体上でもエディタ上でも)
//          sendmessage( hidemaruhandle(0), 0x111, 40010, 0 );
//          Shiftキーを押さえた状態で実行すると、確認メッセージ付きで「完全
削除」の動作になる。
//
//   「ゴミ箱へ移動」の処理(秀丸メール本体上)
//          #n = dllfunc("Move", "", "ゴミ箱");
//   「ゴミ箱へ移動」の処理(エディタ上)
//          #n = dllfunc("Sync");
//          if( #n != 0 ) {
//              #n = dllfunc("ExecAtMain", "Move", "", "ゴミ箱");
//          }
//
//    「完全削除」の処理(秀丸メール本体上)
//           #n = dllfunc("Delete", 0);
//    「完全削除」の処理(エディタウィンドウ上)
//          question "このメールを完全に削除していいですか?";
//          if( result == yes ) {
//              #n = dllfunc("Sync");
//              if( #n != 0 ) {
//                   #n = dllfunc("Delete", 0);
//              }
//          }
//     編集可能な状態でのDeleteキー相当の処理:
//          delete;
//

    message "DeleteCustom.mac";
    loaddll "tkinfo.dll";
    #handle = hidemaruhandle(0);
    if( dllfunc("IsHidemaruMailGrep") ) {
        //検索結果でのマクロを有効にしなければ、ここには来ないと思う。
        //
        //検索結果のウィンドウ上の場合。普通のDeleteキー相当の動作にする。
        //deleteキーをシミュレートさせる。
        #n = dllfunc("SimulateKeyStroke", 0x2E, #shift, 0, 0 );
        endmacro;
    }
    if( (!browsemode) && (!readonly) ) {
        //文字入力可能なウィンドウ上
        delete;
        endmacro;
    }
    #InEditor = ! dllfunc("IsHidemaruMailMain" );
            //エディタウィンドウ上か、それともメインウィンドウ上か。
    #shift = iskeydown( 0x10 );     //Shiftキーが押さえられてるかどうか。
    message "InEditor = " + str(#InEditor) + "       shift=" + str(#shift);
    if( #InEditor ) {
        //エディタ・ウィンドウ上ではゴミ箱へ移動のみ。確認メッセージ表示。
        question "このメールをゴミ箱へ移動してもいいですか?";
        if( result == yes ) {
            #n = dllfunc("Sync");
            if( #n != 0 ) {
                #n = dllfunc("ExecAtMain", "Move", "", "ゴミ箱");
                quit;
            }
        }
    } else {
        #pane = dllfunc("CurrentPane");
        if( #pane == 3 ) {
            //添付ファイル枠がアクティブの時は、添付ファイルの削除として動作
させる。
            //deleteキーをシミュレートさせる。
            #n = dllfunc("SimulateKeyStroke", 0x2E, #shift, 0, 0 );
            endmacro;
        }
        if( #pane == 0 ) {
            //フォルダ枠がアクティブの時でも削除可能にする。ただし確認メッ
セージ表示
            question "フォルダ枠がアクティブですが、メールを削除しようとして
います。かまわずに続行しますか?";
            if( result != yes ) {
                endmacro;
            }
        }
        if( #shift ) {
            //完全削除
            #n = dllfunc("Delete", 0);
        } else {
            question "選択してるメールをゴミ箱へ移動してもいいですか?";
            if( result != yes ) {
                endmacro;
            }
            #n = dllfunc("Move", "", "ゴミ箱");
        }
    }

[ ]
RE:01212 メールの削除の動作諸々No.01234
hajimet さん 17/03/26 11:37
 
コメントありがとう御座います。考えが整理できました。

> 僕が思うには、そもそも的にDeleteキーに「メールの削除」をキー割り当てし
>てるせいで、間違ってメールを削除(というか、ゴミ箱に移動)してしまうケー
>スが多くて、そのせいでundoの必要性が出てきてしまってるような気がします。
具体的な使用状況を書かせて頂きますと、以下のようになります。
受信フォルダに入ってきたメールのうち、
不要(だと思われる)メールを処理する際には、
・とりあえず不要だがあとで必要なことが判明する可能性がゼロではないもの
→削除してゴミ箱に移動する/何かあったら(まず無いが)ゴミ箱の中を検索する
・SPAM(あとで必要になる可能性はまず無いもの)
→ゴミ箱への移動をせずに削除
という2択の処理を判断しながら行っています。
これは、何かあった際にゴミ箱の中を探るとき、
大量のSPAMがあると検出能が著しく落ちるための対策です(経験済み)。

この判断を下す際、最近増えたhtmlメールでは、
メール内容枠では内容が把握できないことが多く、
すこし大きめの窓のメールエディタ(閲覧モード)で確認する必要が生じます。
※この部分が、最近の状況の変化に対応する必要が出てきた部分です。
 そこで、エディタ画面での上記選択判断が可能にできたらと
 思うようになった次第です。

「削除(ゴミ箱への移動)」が対応できていたので
(キー割り当てを自分でしていたことは失念していましたが)
「(ゴミ箱への移動せずに)本当に削除」にも対応できたらと欲が出た次第です。
なぜなら、選択肢によって、作業フローが異なるため
手の動きが干渉して、うまくいかなくなっていたためです。

undoをしたくなるケースは主に、
ゴミ箱への移動をしてしまったのをとりやめ、
本当に削除する作業を行う場合です。

メールリスト枠では、undoが効くので、
ゴミ箱への移動についてはかなり気楽な操作と感じられているため、
あまり慎重にならずに手が動きます。
一方、本当に削除することは、ずっと慎重になります。

以上長くなりましたが、使用状況について
具体的に書かせて頂きました。
この背景に基づいて、如何なる対策があるか、ですが。

ひとつ新しい対応方法で思いついたことがあるので書きます。
気楽にhtmメールの内容を確認できる操作が実現できれば良いのですが、
Enterでエディタ窓が開きます(デフォルトですよね?)
しかしEscをおさないとメールリスト枠に戻れません。
このコストが案外と馬鹿にならないのです。
そこで、「メールリスト枠に戻る」、というような動作のコマンドを
エディタ画面でEnterに割り付けるというような
運用が有効ではないかと思いつきました。
これであれば、概ねデフォルトの動作でサクサク作業ができそうです。

> どうしても現状でのDelete/Shift+Deleteキーでの動作が気に入らなくて、な
>にがなんでも変えたいってことでしたら、適当なマクロを作って、Shift+Delete
>およびDeleteキーに割り当てておくような作戦になります。たぶん簡単に出来そ
>うな気がするので、一回トライしてみます。
については、大変ありがとうございます。
添付ファイル枠にフォーカスがある場合など、
確かにいろいろな場合に対応する必要があり大変なことがよく分かりました。

もし、上記の新しい対応方法が難しい場合は、
Shift+Deleteについてのみ(Deleteのみキーについては現状で満足なので)
マクロを組もうと思っています。
ご紹介頂いたマクロを見て勉強していきます。

[ ]
RE:01234 メールの削除の動作諸々No.01236
秀まるお2 さん 17/03/27 09:33
 
 諸々の問題は、つまり、エディタ・ウィンドウ上と秀丸メール本体ウィンドウ
上でキー割り当てが違ってる&使えるコマンドも違うことが原因だと思うのです
が、作る側の都合的には、なかなか両者を同じにするのは難しいです。

 1つ思いついたやり方としてですが・・・・

 HTMLメールを確認するのに、「メール内容枠の最大化」のコマンドを使う作戦
があります。このコマンドはメール内容枠を一時的に大きくするだけなので、削
除やアンドゥのようなキー操作には影響しないです。

 それでも狭い場合は、「フォルダ枠の最小化」もするといいです。両方まとめ
てマクロでやる作戦もあります。

----最大化切り替えマクロ----------------
    loaddll "tkinfo.dll";
    #viewMaximized = dllfunc("GetCurrentMenuCheckState", 40051);
    #folderMinimized = dllfunc("GetCurrentMenuCheckState", 40222);
    if( #viewMaximized ) {
        //最大化解除
        #n = sendmessage( hidemaruhandle(0), 0x111, 40051, 0 );
        if( #folderMinimized ) {
            #n = sendmessage( hidemaruhandle(0), 0x111, 40222, 0 );
        }
    } else {
        #n = sendmessage( hidemaruhandle(0), 0x111, 40051, 0 );
        if( ! #folderMinimized ) {
            #n = sendmessage( hidemaruhandle(0), 0x111, 40222, 0 );
        }
    }
----------------------------------------

 もう1つの作戦として・・・・

 エディタ・ウィンドウ上でメールを操作したい場合は、Escキーでウィンドウ
を閉じてから操作するって作戦もあります。僕は普段はそうしています。

 マクロでなんとかするとしたら、キー割り当ての中にある

 マクロ1(エディタ側)〜マクロ20(エディタ側)

 の方に適当なマクロを登録して、それに対してキー割り当てする作戦がいかと
思います。

 マクロの内容としては、

 削除(Shiftを押さえながら実行だと削除、普通はゴミ箱移動):

    loaddll "tkinfo.dll";
    #n = dllfunc("Sync");
    if( #n != 0 ) {
        #editor = hidemaruhandle(0);
        #n = dllfunc("SetMainWndTop");
        if( iskeydown( 0x10 ) ) {  // Shiftキーを押さえてるなら削除
            #n = dllfunc("Delete", 0);
        } else {
            #n = dllfunc("Move", "", "ゴミ箱");
        }
        if( #n == 0 ) {
            //キャンセルした場合
            setactivehidemaru #editor;
        }
    }

 アンドゥ:

    loaddll "tkinfo.dll";
    #n = dllfunc("Sync");
    if( #n != 0 ) {
        #editor = hidemaruhandle(0);
        #n = dllfunc("SetMainWndTop");
        #n = sendmessage( hidemaruhandle(0), 0x111, 40208, 0 );
                //40208 = アンドゥ
        if( #n != 0 ) {
            setactivehidemaru #editor;
        }
    }

 ってな具合でいいかなぁと思います。

[ ]
RE:01236 メールの削除の動作諸々No.01261
hajimet さん 17/04/03 00:03
 
ご丁寧にありがとう御座います。
ご紹介いただいたマクロはどれも大いに参考になります。
また、異なる視点のご提案も大変有り難いです。
「メール内容枠の最大化」コマンドの活用で
今般のワークフローの問題は解決できそうな予感があります

ところで
> それでも狭い場合は、「フォルダ枠の最小化」もするといいです。両方まとめ
>てマクロでやる作戦もあります。
について、気づいたことをご報告致します。

ウインドウ 枠のレイアウト 3枠区切り 縦3分割(左から5番目)
に設定していると、
「両方纏めてやるマクロ」と「メール内容枠の最大化」コマンドとが
同じ動作をします。
別の言い方をすると、「メール内容枠の最大化」コマンドの動作において、
「フォルダ枠の最小化」コマンドが同時に作用する設定と、そうじゃない
設定があるようです。

せっかくご紹介いただいたマクロを有効活用するためにも、
縦3分割でも、「フォルダ枠の最小化」の動作を抑制した方が、
動作の一貫性があって良いように思いました。

[ ]
RE:01261 メールの削除の動作諸々No.01263
秀まるお2 さん 17/04/03 10:12
 
> ウインドウ 枠のレイアウト 3枠区切り 縦3分割(左から5番目)
> に設定していると、
> 「両方纏めてやるマクロ」と「メール内容枠の最大化」コマンドとが
> 同じ動作をします。

 たしかにその設定だと、「メール内容枠の最大化」でウィンドウ全体がメール
内容枠のみになるので、その場合はマクロを使う意味が無いようではあります。

 その場合は普通に「メール内容枠の最大化」だけキー割り当てして使っていた
だければいいかなぁと思います。

[ ]