C# 监控电脑锁屏并且记录

直接贴代码,然后再解释代码

class ComputerStatusSwitch
{
    public bool _IsSleeping = false;

    public Action SessionUnlockAction {get; set;}
    public Action SessionlockAction {get; set;}

    public ComnputerStatusSwitch()
    {
        SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
        
    }

    ~ComputerStatusSwitch()
    {
        SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch;
    }

    public void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
    {
        switch (e.Reason)
        {
            switch (e.Reason)
            {
                case SessionSwitchReason.SessionLock:
                    _IsSleeping = true;break;
                case SessionSwitchReason.SessionUnlock:
                    _IsSleeping = false;break;
                case SessionSwitchReason.SessionLogon:
                    _IsSleeping = false;break;
                default:
                    _IsSleeping = false;break;
            }
        }
    }
}

这里面其实就一个委托是主要的,通过+= 和 -=的方式加载和卸载委托,为什么要在析构函数里面卸载委托呢?因为防止句柄泄露(别人是这么说的,我也不太懂,回头研究)

只要通过这个类new一个对象出来,然后就可以通过访问它的_IsSleeping标志来判断当前的电脑是否处于锁屏状态了。

 

 

 

 

 

 

 

你可能感兴趣的:(C#)