我正在寻找类似于 Google 桌面的功能。当您快速按 Ctrl 两次时,会弹出一个小搜索框。
我尝试过使用我在某处找到的相当重的键盘钩子(Hook)类,但这一直给我带来不可预测的结果(即第一次它会工作,然后我按Ctrl一次,然后它会多次引发按键事件?)。
无论如何,这看起来并不应该那么复杂,所以我觉得我一定做错了什么。我的应用程序(WPF 应用程序)将在主窗口的可见性设置为隐藏的情况下运行,并且不会驻留在任务栏中。当我执行 Ctrl - Ctrl 时,我想捕获它并显示窗口。
另一个附带问题 - 我目前正在通过注册热键来实现此目的,但这并不能提供我想要的全部功能(双击 Ctrl)。当窗口显示时,我还没有找到一种 100% 万无一失的方法来检测它何时不再具有焦点(当发生这种情况时我想再次隐藏它)。我尝试过对“Deactivated”、“LostFocus”等做出回应……这些在大多数情况下都有效。但有时,窗口似乎在没有实际激活或接收焦点的情况下显示。对此还有什么想法吗?
谢谢!
亚当
最佳答案
您可能想要使用SetWindowsHookEx在低级别 Hook 键盘事件。
这里有一些 sample code in C++ ,这里是pinvoke.net's entry ,这应该有助于将其移植到 C#。
对于C#代码,可以直接使用,可以试试这个CodeProject sample 。根据我的内存,它在大多数情况下都有效,但有一些错误。有一次,我协助将其移植到 Jad 引擎,我们在其中实现了一个类 ( UserActivityHook ) 来完成此任务,并修复了该过程中的一些错误。这可能是一个非常好的起点......
关于.net - 如何连接到双击 Ctrl 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/978140/