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

lun*_*chs 18 windows user-interface focus-stealing

通过Google快速搜索Windows中的Focus Stealing解决方案,可以看到两个主要结果类别:

  • 人们建议涉及ForegroundLockTimeout注册表项(或TweakUI,我认为只是更改上述注册表项)的不完整解决方案,这不是很有效.
  • 不断 成群的Windows用户抱怨关于.

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

  • 有些东西触发程序在全屏应用程序聚焦时在后台弹出对话框窗口,从而使全屏应用程序最小化.

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

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

Cec*_*her 2

我对如何解决这个问题有一个建议,但由于我缺乏知识,我无法完全实施它。

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