雷蒙德已经发表了博客文章,讲述了如何使用RegisterHotkey
来获取或窃取“前台关注”,当调用时,将把焦点转移到您的应用程序。
尝试手动实现这一点会失败(例如使用SetForegroundWindow
、SwitchToWindow
等),因为应用程序不能从用户那里窃取焦点(以便按键不会去到错误的位置)。
问题在于,今天我注意到了一些奇怪的事情:
我尝试安全地移除外部驱动器。
有一个大约7秒的暂停。
在暂停期间,我正在一个窗口里猛烈地打字。
突然,一个消息框从我的应用程序中窃取了焦点,并且我的打字进入了消息框中。
显然,这不是使用热键机制 -- 然而,Windows 可以从我的应用程序中窃取焦点。
我真的怀疑这里有像“后门”这样的东西被用于特定目的(如果我错了,请纠正我),因此,假设不是这种情况,必须有一种方法可以正确地实现这一点,而无需使用热键机制。
因此问题是,如何完成这个过程?
注意:
Hans 指出,“后门”是AttachInputThread
,但我真的不认为这是在这里发生的 -- 尤其是因为Raymond说,该方法可能导致挂起。我需要更多的想法。