如何在c#windows应用程序中获取Windows解锁事件?

时间:2012-09-06 05:08:15

标签: c# windows

我想在Windows应用程序中跟踪Windows解锁事件。怎么做?用于此的事件是什么?我是否需要导入任何命名空间?

当用户解锁窗口时,应用程序需要执行一些任务。

1 个答案:

答案 0 :(得分:13)

正如StackOverflow回答:https://stackoverflow.com/a/604042/700926中所述,您应该看看SystemEvents.SessionSwitch Event

示例代码也可以在推荐的答案中找到。

我只是将参考StackOverflow answer中显示的代码用于旋转,它似乎适用于带有.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");
            }
        }
    }
}