【问题标题】:Disabling the keyboard in windows c++?在 Windows C++ 中禁用键盘?
【发布时间】:2010-11-15 22:11:53
【问题描述】:

如何在 Windows 中使用 c++ 完全禁用键盘?完全禁用我的意思是即使 Ctrl+Alt+Delete 也不起作用。我确实考虑过使用键盘驱动程序,但我认为您需要在安装后重新启动计算机,但因为我只需要禁用它几分钟,这不会真正起作用。

【问题讨论】:

  • 你认为你为什么需要这样做?

标签: c++ windows keyboard


【解决方案1】:

这是不可能的。

WinLogon 被设计为一个拦截 Ctrl+Alt+Del 按键的进程,即使所有其他事情都挂起或死机. 这是针对恶意会话等的故障保护。因此没有明显的解决方法。

也许键盘过滤器驱动程序会使您的请求成为可能,但这是一个真正的内核驱动程序。

【讨论】:

    【解决方案2】:

    如果不移除键盘或更换键盘驱动程序,您无法禁用 Ctrl-Alt-Delete,它会生成内核级通知.

    【讨论】:

      【解决方案3】:

      您可以使用BlockInput 函数。但它不会阻止 CTRL + ALT + DEL

      【讨论】:

        【解决方案4】:

        您可以安装一个键盘挂钩并过滤掉消息,但您可能需要将您的应用程序作为最顶层的窗口。即使这样 Ctrl+Alt+Del 也不会被过滤掉。

        这是 MSDN 上的 SetWindowsHookEx

        Hooking the Keyboard 的示例

        【讨论】:

          【解决方案5】:

          好的,这里有几个随机建议。我没有明确的答案,但这是我要开始的地方:

          1) SetupDiRemoveDevice 可能是您要调用的 API。虽然要调用它,但您需要进行许多其他设备枚举调用。枚举您的 HID 和 USB 设备并找到键盘。首先为初学者寻找实际设备的 VID/PID。

          2) 删除驱动程序 kdbclass.sys 和 kbdhid.sys。你将与​​ Windows 系统文件作斗争来做到这一点。我不知道这是否可行,但听起来很有趣且简单。

          3) 编写 USB 过滤器驱动程序。您的驱动程序需要知道(或传递)要过滤的设备的 vid/pid,但它可能会起作用。

          【讨论】:

            【解决方案6】:

            如果你想暂时禁用 Ctrl+Alt+Del,我建议通过使用 SuspendThread() 然后 ResumeThread() 从 processthreadsapi.h 暂停 winlogon(ofc 你必须是令人讨厌的管理员)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-12-17
              • 1970-01-01
              • 1970-01-01
              • 2017-11-19
              • 1970-01-01
              • 1970-01-01
              • 2022-01-22
              • 2021-05-31
              相关资源
              最近更新 更多