マクロが無限ループに陥った場合に脱出できるようにしてほしい、という要望がときどき出ていたかと思います。キー入力を検査する機能(これも別途、要望が出ていたかと……)を追加すれば、Escなど何かキーを押せば脱出するようなコードを書くことができます。
※ SeraphyScriptDialogを利用する例
var dt
var ssd = new ActiveXObject(“SeraphyScriptDialog”);
alert(“これから無限ループします。” +
“ステータスバーに現在時刻を表示します。” +
“脱出するには ESC を1秒以上押してください。”
);
while (true) {
if (ssd.GetASyncKeyState(0x1B)) { break; }
dt = new Date();
status = dt.toLocaleString();
ssd.DoEvents();
}
status = “脱出しました。”;
ループ中に他のアプリに処理を明け渡すDoEvents()のようなメソッドも必要ですね。
EmEditorにこの機能が搭載されれば、いわゆるモード型マクロを作成することもでき、マクロで実現できる機能の幅が広がるかと思います。
ご検討いただければ幸いです。