2010/10/21

一定時間キー・マウス操作がなかったときに処理を実行

NILScriptのSystemMonitorユニットには、最後にキーボードやマウスの操作が確認されてから経過した時間を取得する「InputIdle」クラスが用意されています。
これを使用すれば、ユーザーが退席している間に何らかの処理を行ったり、作業状況のログを記録したりするツールを作成できます。

InputIdleクラスの基本的な使い方は、以下のようになります。
Main.createNotifyIcon();
var mon=new (require('SystemMonitor').InputIdle)();
Thread.create(function(){
 var idle;
 while(true){
  if(mon.get(true)<5000){ //規定時間
   if(idle){
    idle=false;
    //↓一定時間以上振りに操作を行ったときに実行される処理
    println("wake");
   }
  }else if(!idle){
   idle=true;
   //↓一定時間操作がなかったときに実行される処理
   println("idle");
  }
  sleep(100);//監視間隔
 }
});

無操作時間を取得するには、InputIdleオブジェクトのget()メソッドを呼び出します。
引数がtrueの場合は、プログラムによって生成された操作を除き、実際にユーザーが行った操作のみを考慮した無操作時間が取得されます。
idle変数は、既に無操作時間が規定値を超えているかどうかのフラグです。
最初に無操作時間が規定値を超えた時にtrueにし、無操作時間が規定値以下の時にtrueになっていたらfalseにすることで、一定時間以上の放置と放置からの復帰を検出しています。
上記の例でprintln()関数を呼び出している部分に、放置や復帰を検出したときの処理を記述します。

0 件のコメント:

コメントを投稿