【问题标题】:Detect when a user presses CTRL -ALT - DEL or Window + L in VB.net检测用户何时在 VB.net 中按下 CTRL -ALT - DEL 或 Window + L
【发布时间】:2010-12-02 21:45:36
【问题描述】:

我正在尝试找出一种方法来检测用户何时按下 CTRL -ALT - DEL 或 Window + L 来锁定 PC。

我使用的代码是

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If (GetAsyncKeyState(17) AndAlso GetAsyncKeyState(18) AndAlso GetAsyncKeyState(46)) Or ((GetAsyncKeyState(91) Or GetAsyncKeyState(92)) AndAlso GetAsyncKeyState(76)) Then
        Msgbox ("Yes")
    End If
End Sub

但是,一旦用户按下 CTRL-ALT-DEL,Windows 安全屏幕就会出现,VB 检测到按键被按下的速度太快了。

我对如何解决这个问题做了一些研究,发现可以编写一个 GINA 存根,它可以将 Windows 安全屏幕延迟一段时间,比如 2 秒,这足以让 VB 检测到密钥已被按下。

通过 VB 禁用 Ctrl-Alt-Del 也不起作用,因为它对 VB 来说太快了,我不想禁用 CTRL-ALT-DEL

有人可以告诉我如何创建 GINA 存根吗???

【问题讨论】:

标签: vb.net


【解决方案1】:

你可以在这里找到一篇关于 GINA 的文章:Customizing GINA, Part 1

但是,Windows Vista 及更高版本不再使用 GINA,因此您必须查看 Credential Providers,但我不确定它们是否支持您想要执行的操作。

我不确定您究竟需要做什么,但我建议您查看 SystemEvents.SessionSwitch 以防万一有用(我自己没有使用过,但听起来很有可能)。

【讨论】:

  • SessionSwitch 事件绝对是你想要的。我自己在几个项目中使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 2012-07-11
相关资源
最近更新 更多