PCで現在のOSのアイドル時間情報を知る方法 - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: PCで現在のOSのアイドル時間情報を知る方法 (/showthread.php?tid=1302) |
PCで現在のOSのアイドル時間情報を知る方法 - Sanchez Chung - 01-04-2016 Curlでメッセンジャーアプリを開発しています。 ユーザーがメッセンジャーを使用する時に、一定時間の間何も操作をしなかった場合(席の外す時など) 「不在中..」という状態情報をメッセンジャー画面に表示したいんです。 このような場合にCurlで、現在のOS(WindowsまたはMac OS)の無効時間情報を知る方法が何ですか? 御存じの方がいらっしゃれば教えていただければ幸いです。 RE: PCで現在のOSのアイドル時間情報を知る方法 - dyoshida - 01-06-2016 Curlアプレットのウィンドウ内部に対する操作でしたら、get-gui-manager(プロシージャ)を使用して取得した GuiManagerにKeyPressとPointerEventのイベントハンドラを追加して監視できそうですが、直接OSから 取得するとなると難しそうですね。 WindowsではCURL.LANGUAGE.DLL-INTERFACEを使用して、user32.dllのget-last-input-infoと Kernel32.dllのget-tick-countを呼び出せばOSが持っているユーザが最後に入力した時刻からの 経過時間が計算できると思います。(残念ながらMac OSはよくわかりません) 試しにコードを書いてみましたが、こんな感じでしょうか。 Code: {curl 8.0 applet} RE: PCで現在のOSのアイドル時間情報を知る方法 - Sanchez Chung - 01-06-2016 早速のご回答ありがとうございます。 サンプルのソースコードまで作成して頂き、さらにありがとうございます。 ご助言頂きました様に一度試してみます。 RE: PCで現在のOSのアイドル時間情報を知る方法 - Sanchez Chung - 01-07-2016 前のメールで頂いたサンプルのソースコードに対して もう一つのご意見をいただければと思います。 コードは下の部分です {define-C-struct public LASTINPUTINFO field public cbSize:UINT field public dwTimeWORD def public size-of = 8 || sizeof LASTINPUTINFO } このコードの四番目のラインである、 def public size-of = 8 || sizeof LASTINPUTINFO ...で、 「size-of = 8」とあらかじめ設定して置いてあるんですが、 これを動的にCurlで知る(取得する)ことは出来るかどうかという質問です。 お手数になるかもしれないんですが よろしくお願いいたします。 RE: PCで現在のOSのアイドル時間情報を知る方法 - dyoshida - 01-08-2016 Win32 API で定義されているLASTINPUTINFO構造体のサイズをCurlから動的に取得する よいアイディアは残念ながら思いつきません。 とりあえず、8がマジックナンバーにならないように下記のように書くと少し良くなるかもしれませんが 悩ましいですね Code: def public Win32-UINT-size = 4 RE: PCで現在のOSのアイドル時間情報を知る方法 - Sanchez Chung - 01-11-2016 御高見いただいて どうもありがとうございました。 今までのアドバイスされたコードは 非常に助かります。 誠にありがとうございます。 |