如何防止Windows中的焦点窃取?

时间:2010-05-12 13:37:38

标签: windows user-interface focus-stealing

快速Google搜索Windows中Focus Stealing的解决方案会显示两个主要结果类别:

  • 人们建议不完整的解决方案涉及到 ForegroundLockTimeout注册表项(或TweakUI,我相信只是更改上述注册表项), 这不是很有效。
  • Incessant hordes Windows用户complaining关于it

在两种常见情况下尤其令人讨厌:

  • 当全屏应用聚焦时,有些东西触发程序在后台弹出对话窗口,导致全屏应用最小化。

  • 在您打字时,窗口会窃取焦点,窃取您的所有击键。如果您碰巧按空格键,输入或触发键盘快捷键(如Y表示是),则可能会导致完全不良后果。

可以应用哪些创意解决方案来解决这些问题中的一个或两个问题?

1 个答案:

答案 0 :(得分:2)

我有一个关于如何解决它的建议,但由于我缺乏知识,我无法完全实现它。

Windows之间的焦点变化必须由违规程序发起,该程序调用最有可能位于shell32或user32中的Windows API函数。有些程序,比如Adobe Photoshop会多次调用(至少两次),以便在用户启动时强制使用。我们的想法是挂钩这个API函数(如果可能的话)并检查调用的来源。如果它不是来自 explorer.exe (即Alt + Tabbing或单击任务栏上的图标),则应该通过所述挂钩阻止呼叫。