繁体   English   中英

使用Windows API或WMI判断任务栏是否显示进程

[英]Using Windows API or WMI to determine if a process is displayed in the taskbar

所以,我正在编写一个类似于应用程序的停靠/任务栏。 我想做的很简单,显示正在运行的程序列表。

我找到了很多方法来枚举所有正在运行的进程,但是经过数小时的谷歌搜索,我找不到一种方法来确定哪些应该显示在任务栏中。

以 Windows 任务管理器为例。 它有两个选项卡,一个名为“应用程序”,一个名为“进程”。 进程包含所有系统进程,而程序以某种方式获取计算机上运行的“应用程序”列表。 我希望能够访问我的程序中的应用程序列表,而不是进程列表,因此在我的伪任务栏中,我不会显示 taskhost.exe、winlogon.exe 等内容。

理想情况下,我将能够获得任务栏中显示的确切程序列表。 My program is in Python, and I have Windows API and WMI access, but if I have to write python wrappers for C functions I will do so.

据我所知,Windows 任务栏 API 更多地用于向现有图标添加菜单或进度条等操作,我找不到访问我正在寻找的信息的方法。 IO 搞错了吗?

谢谢!

此处记录了顶级 windows 出现在任务栏中的规则。 总之:

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

如需更多讨论,请查看Raymond Chen 关于此事的文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM