窃取重点以实施系统范围的搜索框

时间:2010-08-16 08:22:17

标签: focus-stealing

在我的应用程序中(http://tabbles.net)我需要提供一个“全局搜索”快捷键,就像你在谷歌桌面上看到的那样:如果你在任何时候按CTRL + CTRL(不管哪个应用程序处于活动状态且具有键盘焦点),必须弹出一个对话框,您必须能够在其中键入搜索文本并按Enter键。

需要从活动应用程序中窃取焦点

到目前为止,我能够安装全局密钥钩子并使用它来检测密钥组合并显示一个对话框。我将对话框放在最顶层,因此它始终显示在活动应用程序的顶部。但是,如果没有先用鼠标单击它,用户就无法在对话框中键入任何内容,因为我无法将焦点放在对话框内的文本框中。所以用户在键入之前必须用鼠标点击,这是一种负担。

无论如何规避Windows焦点窃取预防?谢谢。

1 个答案:

答案 0 :(得分:1)

我能够通过使用RegisterHotKey而不是全局密钥钩来实现这一点。

重要提示:我还需要使用System.windows.input.Keybord.Focus(文本框)而不仅仅是textbox.focus()。