特定のユーザーがコンピュータにログインしている時間を測定したアプリケーションを作成していたとします(実際に作成しているアプリケーションは異なりますが、問題はありません)。システムイベントとスリープからの復帰
ユーザがログインしたとき、ログアウトしたとき、コンピュータを中断したとき(「シャットダウン」メニューで「待機」)、コンピュータがスリープ状態から復帰したときを追跡する必要があります。
一つの例外を除いて、私はそのためSystemEvents
(具体的には、PowerModeChanged
とSessionSwitch
イベント)を使用していますし、それは主に動作します:コンピューターが中断されると
、PowerModeChanged
イベントが正しくモードSuspend
を上げています。
PowerModeChanged
は、Resume
のモードで発生します。ここまでは順調ですね。
その直後にSessionLock
という理由でSessionSwitch
イベントが発生します。しかし、私が最終的にレジュメの後にログインすると、SessionUnlock
はありません。
この動作は、Windows XP上で起こる、と私は、このロック解除を受信するためにどのような方法がありますXP、Vistaと7
で正しく動作するために、これを必要がありますか?
いいえ、セキュリティで保護されたデスクトップが非アクティブになったことをWindowsで検出する方法は文書化されていません。ポーリングする必要があります。 –
ユーザーがコンピュータにいるかどうかを検出して(マウスを移動してキーを押す)、私は気にしません。現在ログインしているかどうか、コンピュータが中断されておらず、セッションがアクティブであるかどうかはわかりません。 – svick