防止窗口被其他应用程序显示

时间:2010-12-29 18:26:04

标签: winapi

我在Windows中使用ShowWindow函数来显示和隐藏不是由我自己的应用程序创建的特定窗口。使用此函数很简单,因为您基本上只需要传递窗口HWND以及是否显示或隐藏它。但是,有些应用程序会再次出现。

例如,我可以隐藏Google Chrome窗口。但是,在Windows中打开网站时,Chrome会弹出(这是我的默认互联网浏览器),这意味着隐藏的Chrome窗口会再次显示。我想要防止这种情况,因为任何隐藏的窗口都应该始终隐藏起来。

是否可以继续传递hide命令(比如每秒10次左右),以便可能显示的窗口立即再次隐藏,或者是否有锁定这些窗口隐藏的功能?

感谢。

1 个答案:

答案 0 :(得分:3)

如果你想控制一个特定的窗口,试图反复发出隐藏命令不会削减它。

最好的选择是找到目标窗口(FindWindow),将一个钩子dll注入进程(SetWindowHookEx)以挂钩窗口proc:然后在钩子窗口proc中,注意并处理WM_WINDOWPOSCHANGING消息以应用您自己的窗口位置和可见性政策。

由于大多数代码路径最终会通过调用SetWindowPos来改变窗口的可见状态,而SetWindowPos总是通过该消息验证其参数。