【问题标题】:How to hide a window in Windows 7, just like desktop managers do如何在 Windows 7 中隐藏窗口,就像桌面管理器一样
【发布时间】:2010-11-15 17:02:53
【问题描述】:

当我在 Windows 7 上安装虚拟桌面管理器并切换到不同的虚拟桌面时,所有当前窗口都会消失,也会从“开始”菜单中消失。

我想以类似的方式隐藏某些特定应用程序的窗口,但不是全部。如何隐藏这样的窗口?

特别是,我需要隐藏 VirtualBox 无缝模式窗口,所以我不确定最小化窗口是否有效。但是,在使用虚拟桌面管理器时它会消失。

【问题讨论】:

    标签: windows winapi windows-7


    【解决方案1】:

    同一个窗口不能出现在多个桌面上。如果您需要您的应用程序窗口出现在多个桌面上,您需要为每个桌面创建一个单独的窗口。出现窗口的桌面取决于创建窗口的线程。您可以使用 SetThreadDesktop 函数更改桌面线程分配。

    【讨论】:

    • 我不需要窗口出现在多个桌面上。我只想让一个窗口从我当前的桌面上消失。我想这就是我想要的功能,不过……你能给我一些关于创建自己的桌面的提示吗?
    • CreateDesktop 函数创建一个桌面。 ShowWindow 函数可用于更改特定窗口的可见性。两者都记录在 MSDN 库中。 msdn.microsoft.com/library
    • 虚拟桌面软件与 USER32“桌面”对象没有任何关系,通常它只是偏移窗口矩形以将它们置于屏幕之外。
    • 嘿,显然我想要的只是带有 SW_HIDE 标志的 ShowWindow。但是说我确实想将它隐藏在当前桌面中并在另一个桌面中显示它。那将是(伪代码):ShowWindow(SW_HIDE); SetThreadDesktop(CreateDesktop())); ShowWindow(SW_SHOW)?它会出现在新桌面上吗?
    • 不,窗口不能改变桌面。它创建的桌面是它所在的桌面。您当然可以通过与不同桌面关联的线程与窗口进行通信,但这不会影响窗口的桌面分配。
    【解决方案2】:

    答案就是ShowWindow(SW_HIDE)ShowWindow(SW_SHOW)。我认为“虚拟桌面管理器”只是隐藏窗口并在桌面更改时根据需要显示它们。

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      相关资源
      最近更新 更多