【问题标题】:How to disable selective keys on the keyboard?如何禁用键盘上的选择性键?
【发布时间】:2010-04-22 06:09:41
【问题描述】:

我想编写一个应用程序,在它工作时禁用键盘上的某些键。更具体地说,我对可能使应用程序失去焦点的键感兴趣(如 ALT+TAB、WinKey、Ctrl+Shift+Esc 等)。对此的需求与婴儿/动物在键盘上疯狂地撞击有关。 :)

我的第一个想法是使用SetWindowsHookEx(),但是我遇到了问题。由于我需要一个全局挂钩,因此该过程必须驻留在一个 .DLL 中,该 DLL 将被注入所有活动的应用程序中。但是 .DLL 可以是 64 位或 32 位,不能同时是两者。在 64 位系统上,有两种类型的应用程序。我想我必须编写两个钩子 .DLL 的副本——一个用于 32 位,另一个用于 64 位。然后我还必须启动应用程序的两个副本,因为应用程序首先必须加载 DLL 本身,然后才能将其传递给SetWindowsHookEx()

听起来很笨拙和尴尬。有没有更好的方法?还是我误解了什么?

请注意,我仍然希望鼠标和“简单”字母键也能工作,所以BlockInput() 不行。

补充:我可以在 .NET (C#/VB) 或 C/C++ 和 WinAPI 上进行开发。我希望后者会更合适。

【问题讨论】:

  • 您打算使用什么开发平台?我相信 Scott Hanselman 的 Babysmash (C# & WPF) 会做这样的事情。hanselman.com/babysmash
  • 不错!最后一个像样的婴儿粉碎应用程序!我一个也找不到!好的,这是我“要做的事情”列表中的一项。但我也有另一个想法 - 只是一个软件,它允许您有选择地禁用键盘上的几个或所有键(当然减去 Ctrl-Alt-Del)。当我进入一个只使用鼠标进行控制的应用程序(游戏)时,这可能很有用,这样我就可以把我的键盘交给小家伙了。我当然可以拔掉键盘的插头,但我那里的插头很难拿到。
  • 此外,它本身也有助于防止一些烦人的按键,例如 NumLock/CapsLock 等。

标签: windows keyboard


【解决方案1】:

WH_KEYBOARD_LL 在您的进程上下文中运行(在 Win9x 上,您必须坚持使用正常的钩子,但那里没有 64 位问题)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 2016-12-01
  • 2015-01-26
  • 2012-02-24
相关资源
最近更新 更多