【问题标题】:Prevent window from being shown by another application防止窗口被另一个应用程序显示
【发布时间】:2010-12-29 18:26:04
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 你为什么不直接关掉你的电脑,我保证在这种状态下机器不会显示任何 Windows。
  • 好吧,我正在创建一个应用程序,您可以使用它隐藏和显示某些窗口,例如出于隐私原因。关闭计算机会关闭应用程序(以及整个操作系统),所以这实际上没有任何用处。
  • lol jerk comment @DavidHeffernan 但我知道这是一个笑话 :P @ pimvdb: 很棒的发现和描述的怪癖和关于 pimvdb 解决方案的问题。帮了我,但我在 Win8.1 中没有看到这种重新出现的行为,这种重新出现是否只发生在 Win7 之前?

标签: winapi


【解决方案1】:

如果您要控制某个特定的窗口,尝试一遍又一遍地发出隐藏命令不会将其关闭。

最好的选择是定位目标窗口(@98​​7654321@),在进程(SetWindowHookEx)中注入一个钩子dll来钩子窗口proc:然后在钩子窗口proc中,注意并处理@ 987654323@ 消息以应用您自己的窗口位置和可见性策略。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多