当用户在VB.net中按下CTRL -ALT - DEL或Window + L时检测

时间:2010-12-02 13:37:14

标签: vb.net

我正试图找出一种方法来检测用户何时按下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存根?

1 个答案:

答案 0 :(得分:2)

您可以在此处找到有关GINA的文章:Customizing GINA, Part 1

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

我不确定你需要做什么,但我建议你可以查看SystemEvents.SessionSwitch以防可能有用(不是我自己使用但听起来像是一种可能性)。< / p>

相关问题