![阻止程序在 Windows 7 中窃取焦点](https://linux22.com/image/1301544/%E9%98%BB%E6%AD%A2%E7%A8%8B%E5%BA%8F%E5%9C%A8%20Windows%207%20%E4%B8%AD%E7%AA%83%E5%8F%96%E7%84%A6%E7%82%B9.png)
在 Windows 7 中,如果我启动一个程序并立即使其窗口处于非活动状态(例如,通过最小化或切换窗口),则它会在程序完全加载后弹出。
这是不可取的。我想让程序在后台加载,而不会在程序准备就绪后抢占焦点。例如,当我启动 Photoshop 时就会发生这种情况。
有没有什么办法可以禁止这种行为?
答案1
至少根据我所做的研究,似乎 XP 中曾经有一个注册表项可以进行修改以实现此目的但自 Windows 7 以来,该注册表更改一直无效(存在非常激烈的Microsoft 论坛上的相关对话对这个。)
我甚至发现了一个有趣的博客文章我们自己的 Jeff Atwood 在 2007 年写过这篇文章,尽管他的例子是在 XP 中。
论坛上的微软版主似乎建议在 Windows 7 中,默认情况下,正确编写的应用程序不应该窃取焦点(他们辩称 XP 的注册表调整是内置的),但最终,社区认为他们只是错误的有些应用程序只是做。
随着时间的推移,此处关于超级用户的 XP 相关讨论已结束,评论中提出了一些问题,即如何将解决方案应用于 Windows 7。HarryMC 发表了一个很棒的回答这提供了一些启示。
归根结底,似乎根本没有办法在 Windows 7 上普遍实现这一点,因为它似乎更多地与应用程序本身有关。经过一些测试,我发现我的一些应用程序确实需要焦点并获得焦点,而有些则没有。
替代解决方案
一选择我每天都会用到总在最前面(替代链接)。它绑定Ctrl+Space热键以使任何处于焦点的窗口始终位于顶部。
我在处理几乎任何我不想被打断的程序时都会使用它,因为它不允许任何窗口覆盖它。然而,这可能是更多的对某些人来说很烦人。我只是养成了在完成某个程序后按热键或将其最小化的习惯。
替代方案的替代方案(我的观点)
像 HarryMC 在上面回答中所建议的那样的 shell 替换是一个可行的解决方案。
但在我看来,如果您愿意完全替换 Aero,或完全替换 Explorer,或愿意完全替换 Windows shell 以获得此功能(我不会责怪您),那么您也可以同样轻松地替换 Windows。
这就是我今年年初做的事情。学习 ubuntu 很有趣,但是为了更好。