C# 使用SessionSwitch事件防止Windows屏幕锁定

C# 使用SessionSwitch事件防止Windows屏幕锁定,c#,.net,windows,winforms,C#,.net,Windows,Winforms,我只是想知道是否可以使用windows窗体中的SessionSwitch事件阻止windows工作站锁定 我正在使用一个(非常简单的)时间和出勤系统,我想防止用户锁定屏幕,除非他们已将其状态设置为“外出/午餐” 当前代码是这样的 protected override void OnLoad(EventArgs e) { SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_Sessio

我只是想知道是否可以使用windows窗体中的SessionSwitch事件阻止windows工作站锁定

我正在使用一个(非常简单的)时间和出勤系统,我想防止用户锁定屏幕,除非他们已将其状态设置为“外出/午餐”

当前代码是这样的

protected override void OnLoad(EventArgs e)
    {
      SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
    }

void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
    {
        if (e.Reason == SessionSwitchReason.SessionLock)
        {
            MessageBox.Show("Logout reason " + e.Reason);
            // Check if status is valid for logout, if not then prevent lock
        }
    }
有没有办法防止windows窗体中的屏幕锁定?还是我应该寻找一个不同的解决方案


谢谢。

我认为您无法阻止用户锁定屏幕。但是,即使你可以,那又有什么好处呢?他们仍然可以不锁定屏幕就离开,不是吗

对我来说,它让人觉得你需要将时间归属于一个有效的类别,如午餐、工作、会议等。如果是这样,你需要意识到你不能强迫用户这么做。但是,您可以激励用户这样做,也可以惩罚不这样做的用户


我可能会建议,连接到相关事件(SessionSwitch,Applications.Idle)并使用试探法猜测类别(例如,如果计算机空闲超过20分钟,则将其归类为午休)。为用户提供更改分类的能力。这样,在时间表中有3次午餐休息的人,可能会在出发休息之前开始将系统设置为正确的类别。

我认为您无法做到这一点(最终,用户必须保留控制权)。你能不能不把状态设置为自动离开?嗨,达米恩,如果这不可能(看起来确实是这样),那么我将不得不这样做。大约有4或5个有效的注销原因,我们希望跟踪这些原因,以便跟踪用户效率。