如何通过使用挂钩禁用Alt-F4和Ctrl-Alt-Del?

时间:2011-06-18 10:44:37

标签: vb.net winapi

如何禁用Alt-F4和Ctrl-Alt-Del?

我可以使用Alt键锁定键的所有组合吗?

我从互联网上获得了一个示例,它只能禁用Alt + Tab,Alt + Esc,Ctrl + Esc,Windows Key

Select Case wParam
        Case 256, 257, 260, 261
            'Alt+Tab, Alt+Esc, Ctrl+Esc, Windows Key     
            blnEat = ((lParam.vkCode = 9) AndAlso (lParam.flags = 32)) Or _
            ((lParam.vkCode = 27) AndAlso (lParam.flags = 32)) Or _
            ((lParam.vkCode = 27) AndAlso (lParam.flags = 0)) Or _
            ((lParam.vkCode = 91) AndAlso (lParam.flags = 1)) Or _
            ((lParam.vkCode = 92) AndAlso (lParam.flags = 1))
    End Select

在哪里可以看到lParam.vkCode = ??中的按钮代码列表? 如何才能禁用Alt-F4和Ctrl-Alt-Del或使用Alt键禁用所有键组合?

4 个答案:

答案 0 :(得分:2)

您无法拦截CTRL + ALT + DEL。它被称为安全注意密钥,如果应用程序可以拦截它,那么计算机的安全性将受到损害。

您可以做的是配置 Windows通过禁用任务管理器忽略Ctrl + Alt + Del:http://msdn.microsoft.com/en-us/library/ms811991.aspx

没有理由你不能拦截ALT + F4但很难建议你,因为你的问题还没有完全清楚。特别是你提供的代码是脱离上下文的,我无法猜测它在响应中运行的是哪些事件。

如果您正在为F4寻找key code,那么它是&H73。我强烈建议您使用标准的命名常量而不是硬编码的文字值,例如: vbKeyF4

答案 1 :(得分:0)

您无法禁用ctrl-alt-delete组合,因为它永远不会达到应用程序级别。它由操作系统和操作系统处理!

你最好不要从键盘上取下钥匙。然而,有一些方法可以绕过这个限制,比如编写自己的键盘驱动程序或通过Gina存根。

答案 2 :(得分:0)

嗯,即使使用全局键盘挂钩也无法捕获Ctrl + Alt + Del组合,因为它直接传输到操作系统,但您可以轻松地欺骗它。我不确定您的整个问题,但我想您要在应用程序运行时禁用任务管理器。

步骤:

  1. 我们的应用程序启动任务管理器的隐藏模式的Onload事件(现在,如果用户按下Ctrl + Alt + Del,则不会发生任何事情)。
  2. OnClose应用程序的事件只需关闭任务管理器。

答案 3 :(得分:0)

禁用Alt + f4,它有效!

    Protected Overrides ReadOnly Property CreateParams() As CreateParams
    Get
        Dim cp As CreateParams = MyBase.CreateParams
        Const CS_NOCLOSE As Integer = &H200
        cp.ClassStyle = cp.ClassStyle Or CS_NOCLOSE
        Return cp
    End Get
End Property