我想从Windows 10的任务栏中删除多台桌面的窗口。对于Windows8.1,我使用了ITaskbarList::DeleteTab,它工作得很好。
对于Windows 10,此方法也从任务栏中隐藏Windows,但在它之后,我在所有桌面上都看到了这个窗口。我只想在一个桌面上看到这个窗口。
有人知道在Windows 10中隐藏窗口并将此窗口保存在一个桌面上的方法吗?
在下面您可以看到,我在“在Windows 10中从任务栏中隐藏窗口”下面的意思:
发布于 2016-06-12 09:29:26
根据我的理解,通过我的经验测试,任务栏预览中出现的窗口与通常出现在任务栏中的窗口完全相同。很久以前,例如在Windows 2000中,每个应用程序的合格窗口都会显示为任务栏上的按钮。从Windows开始,任务栏分组成为一个选项,这样来自单个应用程序的所有合格窗口都可以分组在一起,并显示为任务栏上的单个按钮。然后,在Windows中,当您在相应的任务栏按钮上悬停时,可以显示这些打开的窗口的预览。Windows 8和Windows 10都没有改变这一基本规则;它们只改变预览的外观。
因此,我们可以参考MSDN文档来了解任务栏上出现哪些窗口的规则:
每当应用程序创建不属于自己的窗口时,Shell都会在任务栏上创建一个按钮。若要确保将“窗口”按钮放置在任务栏上,请创建一个具有
WS_EX_APPWINDOW
扩展样式的未拥有的窗口。若要防止将“窗口”按钮放置在任务栏上,请使用WS_EX_TOOLWINDOW
扩展样式创建未拥有的窗口。作为另一种选择,您可以创建一个隐藏窗口,并使此隐藏窗口成为可见窗口的所有者。
雷蒙德·陈( Raymond )更准确地总结了这些规则-- 这里。引用他的话:
窗口进入任务栏有一些基本规则。简言之:
WS_EX_APPWINDOW
扩展样式,那么它将显示(当可见时)。(尽管ITaskbarList接口有点混淆了这一点。)
你之前给ITaskbarList::DeleteTab
打过电话,搞砸了。这是不必要的。要确保窗口不出现在任务栏中,只需应用控制窗口出现在任务栏中的规则的逆序即可。
如果您有一个顶级的无主窗口,除非您删除WS_EX_APPWINDOW
扩展窗口样式,否则它将显示在任务栏中。如果您有一个拥有的窗口,那么它将不会显示在任务栏中,除非WS_EX_APPWINDOW
扩展窗口样式被设置为强制它出现在任务栏中。
因此,如果设置了WS_EX_APPWINDOW
扩展窗口样式,则应该删除它。这迫使窗口显示在任务栏中。
否则,您应该为您的窗口设置所有者。例如,使第二个窗口为第一个窗口所拥有。
发布于 2017-03-22 15:22:00
TL;DR:
WS_EX_APPWINDOW
和WS_EX_TOOLWINDOW
。示例:
从扩展样式中移除标志:
SetWindowLong(myHWND, GWL_EXSTYLE,
GetWindowLong(myHWND, GWL_EXSTYLE) & ~WS_EX_APPWINDOW & ~WS_EX_TOOLWINDOW);
设置所有者:
SetWindowLongPtr(myHWND, GWLP_HWNDPARENT, myOwnerHWND);
全面解释:
尽管科迪的回答很棒,但它并没有完全回答这个问题。
确切的问题是:“如何显示未出现在任务栏中但仅显示在一个虚拟桌面上的窗口?
正如Cody所解释的,有几种方法可以删除窗口的任务栏按钮。然而,其中只有一种方式,使得它只能同时在一个虚拟桌面上显示。
如果在扩展样式中包括标志WS_EX_APPWINDOW
,它将强制窗口显示在任务栏中。这就是为什么在这种情况下必须清除的原因。
如果在扩展样式中包括标志WS_EX_TOOLWINDOW
,它将强制窗口而不是显示在任务栏中,但将强制在所有虚拟桌面上显示该窗口。因此,这也不是一种选择。
最后,如果您的窗口没有任何标志,它将显示在任务栏当且仅当它没有所有者。无论如何,它将而不是强制自己在所有虚拟桌面上。因此,解决方案是不使用任何标志,而是设置所有者。
发布于 2022-02-04 17:44:29
将WS_EX_NOACTIVATE添加到窗口的ex样式。https://learn.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles
使用此样式创建的顶级窗口在用户单击该窗口时不会成为前台窗口。当用户最小化或关闭前台窗口时,系统不会将此窗口带到前台。不应通过编程访问或通过可访问的技术(如叙事者)通过键盘导航激活窗口。若要激活窗口,请使用SetActiveWindow或SetForegroundWindow函数。默认情况下,该窗口不会出现在任务栏上。若要强制窗口出现在任务栏上,请使用WS_EX_APPWINDOW样式。
https://stackoverflow.com/questions/37748812
复制相似问题