WindowsアプリケーションでWindowsのロック解除イベントを追跡したい。どうしたの?それに使用されるイベントは何ですか?私はそれのための任意の名前空間をインポートする必要がありますか?C#windowsアプリケーションでウィンドウロックを解除する方法は?
ユーザーがウィンドウのロックを解除している間、アプリケーションはいくつかのタスクを実行する必要があります。
WindowsアプリケーションでWindowsのロック解除イベントを追跡したい。どうしたの?それに使用されるイベントは何ですか?私はそれのための任意の名前空間をインポートする必要がありますか?C#windowsアプリケーションでウィンドウロックを解除する方法は?
ユーザーがウィンドウのロックを解除している間、アプリケーションはいくつかのタスクを実行する必要があります。
このStackOverflowの回答に掲載されている通り:https://stackoverflow.com/a/604042/700926SystemEvents.SessionSwitch Eventをご覧ください。
サンプルコードは、参照された回答にも記載されています。
私はちょうどスピンのためにStackOverflow answerに示されたコードを取ったし、.NETフレームワーク4.5でWindows 8 RTMで動作するようです。
参考までに、私が組み立てたコンソールアプリケーションの完全なサンプルコードが含まれています。
using System;
using Microsoft.Win32;
// Based on: https://stackoverflow.com/a/604042/700926
namespace WinLockMonitor
{
class Program
{
static void Main(string[] args)
{
Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);
Console.ReadLine();
}
static void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e)
{
if (e.Reason == SessionSwitchReason.SessionLock)
{
//I left my desk
Console.WriteLine("I left my desk");
}
else if (e.Reason == SessionSwitchReason.SessionUnlock)
{
//I returned to my desk
Console.WriteLine("I returned to my desk");
}
}
}
}
私は使用していますWindowsアプリケーションの場合はどこに 'Microsoft.Win32.SystemEvents.SessionSwitch + = new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);を追加する必要がありますか? –
これはうまくいきました。フォームのinitializeイベントの中に上記のコードを追加しました。 –
の可能性のある重複:http://stackoverflow.com/questions/603484/checking-for-workstation-lock-unlock-change-with-c-sharpまたはこのhttp://stackoverflow.com/questions/44980/how-can-i-programmatically-determined-my-workstation-is-locked –
このリンクの回答は、マークまでではありませんでした。 : –
私はStackOverflowでこのタイプの質問の多くの "インスタンス"があるようですが、役に立つかもしれないサンプルコードが含まれていますので、私はその答えの1つを投稿しました –