|
マクロのサンプルというか、簡単な例を作ってみました。
秀丸メール本体側とエディタ側でマクロ登録した上で、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", "", "ゴミ箱");
}
}
|
|