如何双击Ctrl键?

我正在寻找的功能类似于谷歌桌面。当您快速按两次Ctrl时,会弹出一个小搜索框。 我已经尝试使用一个相当重的键盘钩类,我发现它在某个地方,但它一直给出了不可预知的结果(即第一次它会工作,然后我按Ctrl一次,它会多次按下按键事件?) 。 无论如何,这似乎不应该是复杂的,所以我觉得我一定做错了。我的应用程序(WPF应用程序)将运行,主窗口的可见性设置为隐藏,而不是驻留在任务栏中。当我执行Ctrl - Ctrl时,我想抓住它并显示窗口。 另一个问题 - 我目前通过注册热键来做这件事,但这并没有给我我想要的全部功能(双击Ctrl键)。当窗口显示时,我没有找到一种100%万无一失的方法来检测它何时不再有焦点(我想在发生这种情况时再次隐藏它)。我已经尝试过响应Deactivated,LostFocus等......而且这些工作大部分时间都在工作。但有时看起来窗口显示时没有实际被激活或接收焦点。关于这个的任何想法? 谢谢! 亚当     
已邀请:
您可能希望使用SetWindowsHookEx以较低级别挂钩键盘事件。 下面是C ++中的一些示例代码,这里是pinvoke.net的条目,它应该有助于将其移植到C#。 对于直接可用的C#代码,您可以尝试使用此CodeProject示例。从我的记忆中,它在大多数情况下都有效,但有一些错误。有一次,我协助将其移植到Jad引擎,在那里我们实现了一个完成此操作的类(UserActivityHook),并在此过程中修复了一些错误。这可能是一个非常好的开始......     
至于第二个问题,如果在显示时未激活表单,则应在显示后调用Form.Activate。对于简单的调试,将跟踪语句放在GotFocus,LostFocus,Enter,Exit和Activate中,停用事件并查看是否有任何一致满足您的需求。     

要回复问题请先登录注册