多くの機能が用意されているWindowクラスですが、中でも特徴的なのはウィンドウの生成や表示を監視してコールバック関数を実行してくれる「Window.observe()」でしょう。
この機能では、イベントの発生をシステムから通知してもらうシェルフックという仕組みを使用しているため、ループやタイマーでウィンドウの状態を監視するのに比べて低負荷で素早い応答が可能になっています。
次のスクリプトは、Window.observe()を使用したスクリプトの例です。
ここでは、ウィンドウの表示を監視し、条件に一致するウィンドウだったらそのウィンドウを閉じるという処理を行っています。
==の後の文字列は、それぞれ実行ファイル名とウィンドウタイトルの条件を指定しています。これを変更すれば、不要なダイアログなどを自動で閉じるツールとして使えるでしょう。
Main.createNotifyIcon(); var Window=require('Window').Window; Window.observe('show',function(e){ if((e.window.ownerProcess.name=='notepad.exe')&&(e.window.title=='行へ移動')){ e.window.close(); } });
Window.observe()の第1引数はイベント名で、以下の物を指定できます。
- activate
- 新たなウィンドウがアクティブになったとき。
- create
- ウィンドウが生成されたとき。
- destroy
- ウィンドウが破棄されたとき。
- show
- 表示されたとき。なお、ツールチップなどのウィンドウでも発生する。
- hide
- 非表示になったとき。
- redraw
- タイトルバーの内容が変更されたときなど。変更前と同じ内容の時もある。
第2引数には、イベントが発生した時に実行されるコールバック関数を指定します。
この関数の第1引数には、「window」メンバにイベント発生元のウィンドウを表すWindowオブジェクト、「event」メンバに発生したイベント名が格納されたオブジェクトが渡されます。
Windowオブジェクトに用意されている機能については、NILScriptに同梱の「doc\Window.txt」を参照してください。
0 件のコメント:
コメントを投稿