マクロでキー入力を検査する&無限ループ対策

投稿者: kshi1 声1 投稿

マクロが無限ループに陥った場合に脱出できるようにしてほしい、という要望がときどき出ていたかと思います。キー入力を検査する機能(これも別途、要望が出ていたかと……)を追加すれば、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にこの機能が搭載されれば、いわゆるモード型マクロを作成することもでき、マクロで実現できる機能の幅が広がるかと思います。 ご検討いただければ幸いです。

このトピックの投稿: 1