从 Windows 10 的任务栏中删除窗口

     2023-02-22     236

关键词:

【中文标题】从 Windows 10 的任务栏中删除窗口【英文标题】:Remove window from taskbar on Windows 10 【发布时间】:2016-06-10 12:53:26 【问题描述】:

我想在具有多个桌面的 Windows 10 上从任务栏中删除窗口。 对于 Windows 8.1,我使用了 ITaskbarList::DeleteTab,它运行良好。

对于 Windows 10,此方法也会从任务栏中隐藏 Windows,但之后我会在所有桌面上看到此窗口。我只想在一个桌面上看到这个窗口。

有谁知道在 Windows 10 中从任务栏中隐藏窗口并将此窗口保留在一个桌面上的方法?

您可以在下面看到,我在“从 Windows 10 的任务栏中隐藏窗口”下的意思:

【问题讨论】:

什么是“在 Windows 10 中从任务栏中隐藏窗口并将此窗口保留在一个桌面上”“应该是什么意思?你能改写一下吗? 谢谢,我会尝试添加图片。 那是窗口预览。 .... 这是一个 Windows 配置选项,除非您想操作 Windows 设置,否则这里没有什么可以“删除”的。这闻起来像是请求恶意软件创建协助。 @specializt 确实是这么说的,但令人困惑的是,文档是在谈论 MFC 所有权,而不是 Win32 所有权。遗憾的是,Win32 SDK 文档经常交替使用这些术语,因为相同的函数入口点用于设置父级或所有者。这是可行的,因为单个窗口可以有要么 一个父 一个所有者(取决于它是子窗口还是***窗口),不能同时拥有 /i>。不久前,Raymond Chen 在博客中谈到了这一点;强烈推荐阅读以消除混乱:blogs.msdn.microsoft.com/oldnewthing/20100315-00/?p=14613 【参考方案1】:

在我的理解中,通过我的经验测试证明,出现在任务栏预览中的窗口与通常出现在任务栏中的窗口完全相同。很久以前,比如说在 Windows 2000 中,应用程序的每个符合条件的窗口都只会在任务栏上显示为按钮。从 Windows XP 开始,任务栏分组成为一种选择,因此来自单个应用程序的所有符合条件的窗口都可以组合在一起,并在任务栏上显示为单个按钮。然后,在 Windows Vista 中,当您将鼠标悬停在相应的任务栏按钮上时,可以显示这些打开窗口的预览。 Windows 8 和 Windows 10 都没有改变这一基本规则。他们只是改变了预览的外观。

因此,我们可以参考MSDN documentation 来了解哪些窗口出现在任务栏上的规则:

每当应用程序创建一个不属于自己的窗口时,Shell 就会在任务栏上创建一个按钮。要确保窗口按钮放置在任务栏上,请使用WS_EX_APPWINDOW 扩展样式创建一个无主窗口。要防止窗口按钮放置在任务栏上,请使用 WS_EX_TOOLWINDOW 扩展样式创建无主窗口。作为替代方案,您可以创建一个隐藏窗口,并让这个隐藏窗口成为您可见窗口的所有者。

Raymond Chen 更准确地总结了这些规则here。引用他的话:

有一些关于哪些窗口进入任务栏的基本规则。简而言之:

如果设置了WS_EX_APPWINDOW 扩展样式,那么它将显示(可见时)。 如果窗口是顶层无主窗口,那么它将显示(可见时)。 否则不显示。

(虽然ITaskbarList 界面有点搞混了。)

你之前把事情搞砸了,打电话给ITaskbarList::DeleteTab。那是没有必要的。为确保窗口不会出现在任务栏中,只需应用与窗口何时出现 的规则相反的规则。

如果您有一个顶层无主窗口,它将显示在任务栏中,除非您删除 WS_EX_APPWINDOW 扩展窗口样式。如果您有一个拥有的窗口,那么它不会显示在任务栏中,除非 WS_EX_APPWINDOW 扩展窗口样式设置为强制它在那里。

因此,如果您设置了 WS_EX_APPWINDOW 扩展窗口样式集,则应将其删除。那就是强制窗口显示在任务栏中。

否则,您应该为您的窗口设置所有者。例如,使第二个窗口归第一个窗口所有。

【讨论】:

感谢您对窗口的父/所有者的回答和评论非常有用。我发现我的错误在哪里。我在这里留下关于 Qt 特定的评论,因为它可能对某些事情有用。如果你想用所有者(非父)创建 QWidget,你需要在 QWidget 的构造函数中传递父并设置窗口标志(例如 Qt::Window,Qt::Tool)。如果在 contrucor 之后调用 setParent 和 setWidnwoFlags,它会将 parent(非所有者)设置为 window。【参考方案2】:

TL;DR:

    从扩展样式中删除 WS_EX_APPWINDOWWS_EX_TOOLWINDOW。 设置窗口的所有者。

示例:

从扩展样式中移除标志:

SetWindowLong(myHWND, GWL_EXSTYLE, 
    GetWindowLong(myHWND, GWL_EXSTYLE) & ~WS_EX_APPWINDOW & ~WS_EX_TOOLWINDOW);

设置所有者:

SetWindowLongPtr(myHWND, GWLP_HWNDPARENT, myOwnerHWND);

完整解释:

尽管Cody's answer 很棒,但它并不能完全回答确切的问题。

确切的问题是:“如何显示一个没有出现在任务栏中的窗口,只出现在一个虚拟桌面上

正如 Cody 所解释的,有几种方法可以删除窗口的任务栏按钮。但是,其中只有 一种 方法可以使其同时仅显示在一个虚拟桌面上。

如果您在扩展样式中包含标志WS_EX_APPWINDOW,它将强制窗口显示在任务栏中。这就是为什么在这种情况下必须清除它。

如果您在扩展样式中包含标志WS_EX_TOOLWINDOW,它将强制窗口显示在任务栏中,将强制显示窗口在所有虚拟桌面上。因此,这里也不是一个选项。

最后,如果您的窗口没有标志,当且仅当它没有所有者时,它才会显示在任务栏中。无论哪种方式,它都不会在所有虚拟桌面上强制执行。因此,解决方案是既没有标志,也没有设置所有者。

【讨论】:

【参考方案3】:

WS_EX_NOACTIVATE 添加到窗口的 ex 样式中。 https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles

使用此样式创建的***窗口不会成为 用户单击时的前景窗口。系统不带 当用户最小化或关闭 前景窗口。该窗口不应通过激活 编程访问或通过可访问的键盘导航 技术,例如讲述人。要激活窗口,请使用 SetActiveWindow 或 SetForegroundWindow 函数。窗户没有 默认出现在任务栏上。强制窗口出现在 任务栏,使用 WS_EX_APPWINDOW 样式。

【讨论】:

PyQt 从任务栏中删除窗口

】PyQt从任务栏中删除窗口【英文标题】:PyQtRemoveWindowfromTaskbar【发布时间】:2017-05-2214:36:28【问题描述】:我正在尝试让一个帮助窗口以无边框全屏模式打开,并且不让它出现在任务栏上。我已经让它不出现在任务栏上,但由... 查看详情

如何使用 C# 从 Windows 任务栏中删除新闻和兴趣? [关闭]

】如何使用C#从Windows任务栏中删除新闻和兴趣?[关闭]【英文标题】:HowdoIremovethenewsandinterestsfromwindowstaskbarwithC#?[closed]【发布时间】:2021-12-2821:40:17【问题描述】:我将如何使用C#从Windows任务栏中删除新闻和兴趣?我用谷歌搜索... 查看详情

Tkinter,Windows:如何在没有标题栏的 Windows 任务栏中查看窗口?

】Tkinter,Windows:如何在没有标题栏的Windows任务栏中查看窗口?【英文标题】:Tkinter,Windows:Howtoviewwindowinwindowstaskbarwhichhasnotitlebar?【发布时间】:2015-08-2711:25:27【问题描述】:我创建了一个窗口:root=Tk()并删除了标题栏:root.over... 查看详情

隐藏windows任务栏中的窗口显示

CoInitialize(NULL);ITaskbarList*pTaskBarList=NULL;HRESULThr=CoCreateInstance(CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,IID_ITaskbarList,(void**)&pTaskBarList);if(SUCCEEDED(hr))pTaskBarLi 查看详情

隐藏windows任务栏中的窗口显示(代码片段)

CoInitialize(NULL);ITaskbarList*pTaskBarList=NULL;HRESULThr=CoCreateInstance(CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,IID_ITaskbarList,(void**)&pTaskBarList);if(SUCCEEDED(hr))pTaskBarList->HrInit();if(Show)pTaskBarList->AddTab(m_hWnd); else pTaskBarList->DeleteTab(m_hWnd... 查看详情

从任务栏中隐藏窗口而不使用 WS_EX_TOOLWINDOW

】从任务栏中隐藏窗口而不使用WS_EX_TOOLWINDOW【英文标题】:HideWindowfromtaskbarwithoutusingWS_EX_TOOLWINDOW【发布时间】:2015-06-1908:13:40【问题描述】:我有一个主窗口和一个关于窗口,关于窗口是从主窗口打开的,但问题是关于窗口显... 查看详情

Win32:是不是可以显示窗口但将其从任务栏中隐藏?

】Win32:是不是可以显示窗口但将其从任务栏中隐藏?【英文标题】:Win32:Isitpossibletoshowthewindowbuttohideitfromtaskbar?Win32:是否可以显示窗口但将其从任务栏中隐藏?【发布时间】:2015-11-0506:50:02【问题描述】:如果我有一个带有多... 查看详情

如何从任务栏中删除我的 javafx 程序

】如何从任务栏中删除我的javafx程序【英文标题】:HowcanIremovemyjavafxprogramfromthetaskbar【发布时间】:2018-03-2413:11:42【问题描述】:我需要从任务栏中删除我的javafx应用程序。我试过StageStyle.UTILITY。这是可行的,但我需要UNDECORATED... 查看详情

从任务栏中隐藏应用程序

】从任务栏中隐藏应用程序【英文标题】:Hidinganapplicationfromthetaskbar【发布时间】:2012-01-0419:51:47【问题描述】:我一直在努力从我的应用程序的任务栏中隐藏另一个应用程序。我一直在使用SetWindowLong函数来设置/删除extendedstyle... 查看详情

如何在任务栏中显示 QMainWindow

】如何在任务栏中显示QMainWindow【英文标题】:HowtoshowaQMainWindowinthetaskbar【发布时间】:2018-09-0311:05:48【问题描述】:我正在使用Qt制作桌面应用程序。主窗口打开其他两个窗口之一,但是当其他窗口工作时我需要隐藏主窗口,... 查看详情

如何从进程中恢复隐藏的 wpf 窗口

...述】:在我的wpf窗口中,我隐藏了窗口并在关闭时将其从任务栏中删除。如何从正在运行的进程中激活该窗口。我尝试了很多方法,但都没有成功。这是我激活隐藏窗口的示例代码。privatevoidcheckIfProcessRunning()//getthena 查看详情

使用 C# 包装器从任务栏中删除应用程序?

】使用C#包装器从任务栏中删除应用程序?【英文标题】:RemoveapplicationfromtaskbarwithC#wrapper?【发布时间】:2011-01-1014:12:19【问题描述】:有没有办法为现有应用程序构建一个C#包装器,让我可以将其从任务栏中删除?更多信息:... 查看详情

使浏览器窗口在任务栏中闪烁

】使浏览器窗口在任务栏中闪烁【英文标题】:MakebrowserwindowblinkintaskBar【发布时间】:2010-09-0710:02:10【问题描述】:如何使用JavaScript在任务栏中使用户的浏览器闪烁/闪烁/突出显示?例如,如果我每10秒发出一次AJAX请求以查看... 查看详情

win7下怎样关闭任务栏中的进度条,但不关掉窗口预览

...个性化”中。三、任务栏没有预览窗口的功能(一)设置Windows7主题最简单的方法莫过于设置Windows7的主题模式,在桌面任意位置点击鼠标右键,键入菜单项“个性化(R)”,这个功能是设置Windows7主题模式的,家庭高级版、专业版... 查看详情

删除 Tkinter 窗口上的 TK 图标

...题栏中删除tkinter图标【问题讨论】:【参考方案1】:在Windows上第一步:使用图标编辑器或rw-designer之类的网站创建透明图标。另存为transparent.ico。第二步:fromtkinterimport*tk=Tk()tk 查看详情

Electron 应用程序 - 如何在全屏模式下禁用/隐藏任务栏中的窗口

...任务栏中的窗口【英文标题】:Electronapp-howtodisable/hidethewindowsinthetaskbarinfull-screenmode【发布时间】:2020-06-0417:39:49【问题描述】:我已经为此苦苦挣扎了一段时间,但仍然没有找到任何好的解决方案。我正在开发一个Windows全屏(... 查看详情

Windows 10 任务栏打开窗口 - 缩略图或列表

】Windows10任务栏打开窗口-缩略图或列表【英文标题】:Windows10Taskbaropenwindows-thumbnailsorlist【发布时间】:2021-08-2515:56:03【问题描述】:在我的旧Windows7中,我可以将打开的窗口列表悬停在文件夹图标上,并且可以“列表”格式获... 查看详情

Windows 7 任务栏:捕获缩略图

】Windows7任务栏:捕获缩略图【英文标题】:Windows7Taskbar:Capturethumbnails【发布时间】:2011-04-2920:57:14【问题描述】:是否可以从Win7任务栏中捕获“实时”缩略图?我想在我的应用程序中显示这个(另一个窗口的)预览,但是如何... 查看详情