秀丸エディタ・自動でも終了するメッセージボックス
概要
秀丸のマクロを作っていると、「メッセージボックス」を出すことがよくあります。
情報の告示や、マクロのデバッグ時など、メッセージボックスは最も頻繁に利用される機能のひとつでしょう。
さて、
メッセージボックスは、一度表示すると、ボタンを押すまでは閉じないモノだと思われているかもしれませんが、
そんなことはありません。
この自動終了式のメッセージボックスは、ボタンを押さなかったとしても、指定した時間で終了する、
そんな特殊なメッセージボックスです。
ダウンロード
動作環境
- 秀丸 ver7.00以上
インストール
- HmTimerMessageBox.zipを解凍する。
- HmTimerMessageBox.exeとHmTimerMessageBox.macを適当な場所にコピー。
- 秀丸に適当に登録して、マクロを実行してみる。
HmTimerMessageBox.exeの単独での使い方
秀丸のマクロを見れば、わかることなのですが、秀丸マクロ経由に限らず
このHmTimerMessageBox.exeは単独でも使えます。
HmTimerMessageBox.exeのコンソールコマンド例
「コンソールコマンド」を開き、
HmTimerMessageBox.exe "本文だけあれば最低限は表示される"
HmTimerMessageBox.exe "本文はこれこれこれ" "次はタイトルだ!!"
HmTimerMessageBox.exe "本文はこれこれこれ" "次はタイトルだ!!" 34 // 34 というのは、ボタンのパターンやアイコンの種類、などなど。 // HmTimerMessageBoxを見ればわかりますが、 // #MB_ICONQUESTION(=0x20=32)と、#MB_ABORTRETRYIGNORE(=0x2=2)で、合計34です。 // マクロ内では16進数で表記されており、ビットOR演算子を使って複数の状態を表現しています。 // (win32のC/C++プログラムでよくみられる手法です)
HmTimerMessageBox.exe "本文はこれこれこれ" "次はタイトルだ!!" 54 5000 // 最後の5000というのは、5000ミリ秒(すなわち5秒)のこと。
HmTimerMessageBoxJS.macとは
-
jsmodeを使った例こそが、HmTimerMessageBox.exe が最も活きる
HmTimerMessageBoxJS.mac のように hidemaru.runProcess 経由で利用すると、
メッセージボックスを出している間も、秀丸の裏の処理がブロックされたりすることはなくなりますので、
優れた使い方となります。秀丸マクロの jsmode/JavaScript でのソース例
var command = sprintf("%s %s %s %d %d", currentmacrodirectory() + "\\HmTimerMessageBox.exe", "メッセージ", "タイトル", MB.ABORTRETRYIGNORE | MB.ICONINFORMATION | MB.DEFBUTTON2, 4000); var exeProcess = hidemaru.runProcess( command, ".", "stdio", "sjis" ); exeProcess.onClose( function() { // exitCode は IDのOKやRETRYやABORTなどと同じ数値が返ってくる。 // これにより、何を選んだのか? あるいはタイムが切れたのか? などが判断できる。 console.log(exeProcess.exitCode); } );
理解可能なのであれば、このjsmode での方法を強く推奨します。
他のありとあらゆる 非同期マクロにとっても、こちらの方が処理が阻害されないため、遥かに優れています。
HmTimerMessageBox.macとは
-
HmDclreMessagePrm関数
グローバル定数的なものを定義して、ダイアログボックスのオプションを使いやすくしてます。
-
HmTimerMessageBox関数
実際にダイアログを表示するための関数です。
秀丸マクロでのソース例
この使い方ですと、秀丸備え付けの message 関数とほとんど同じなので、あまり意味がありません。
この使い方では 秀丸備え付けの messagee 関数同様、
「ブロック/ロックされてしまい、メッセージボックスが出ている間、全ての秀丸の操作が出来なくなってしまいますので
あまりお勧めはしません。
基本的には このようなブロック状態にならない jsmode/JavaScriptの方法で利用してください。
call HmDclreMessagePrm; call HmTimerMessageBox "数秒で自動で閉じるダイアログ", "自動で閉じるダイアログ", (#MB_ABORTRETRYIGNORE|#MB_ICONINFORMATION|#MB_DEFBUTTON2), 4000; if (##return == #IDTIMEOUT) { message("未選択のまま時間ぎれ"); } if (##return == #IDRETRY) { message("再トライを選択しました"); } if (##return == #IDCANCEL) { // 実際には「#MB_ABORTRETRYIGNORE」では、このようなボタンがくることはない。 message("キャンセルボタンを選択しました"); } endmacro;
ライセンス等
-
HmTimerMessageBox.mac
添付されている、HmTimerMessageBox.macファイルは自由に使用してください。
パブリックドメインです。
-
HmTimerMessageBox.exe
HmTimerMessageBox.exeについては、修正BSDライセンスです。
HmTimerMessageBoxのソースはGithubに上がっています。