7

WindowsアプリケーションでWindowsのロック解除イベントを追跡したい。それはどのように行われますか?そのために使用されるイベントは何ですか?そのために名前空間をインポートする必要がありますか?

ユーザーがウィンドウのロックを解除している間、アプリケーションはいくつかのタスクを実行する必要があります。

4

1 に答える 1

22

この StackOverflow の回答に投稿されているように: https://stackoverflow.com/a/604042/700926 SystemEvents.SessionSwitch Eventを確認する必要があります。

サンプルコードは、参照された回答にもあります。

参照されているStackOverflow の回答に示されているコードを試してみたところ、.NET Framework 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");
            }
        }
    }
}
于 2012-09-06T05:14:51.113 に答える