使用Windows API或WMI确定任务栏中是否显示进程

jmi*_*ite 3 python windows winapi taskbar

所以,我正在写一个像应用程序一样的dock/taskbar.我想要做的很简单,显示正在运行的程序列表.

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

以Windows任务管理器为例.它有两个选项卡,一个标题为Applicationss,另一个标题为进程.进程包含所有系统进程,而程序以某种方式获取计算机上运行的"应用程序"列表.我希望能够访问应用程序的列表在我的计划,而不是进程列表中,这样在我的伪taksbar我不喜欢taskhost.exe,WINLOGON.EXE等显示的东西

理想情况下,我将能够获得任务栏中显示的确切程序列表.我的程序是在Python中,我有Windows API和WMI访问,但如果我必须为C函数编写python包装器,我会这样做.

据我所知,Windows Tasksbar API更适用于将menups或进度条添加到现有图标,我无法找到访问我正在寻找的信息的方法.我错了吗?

谢谢!

Dav*_*nan 6

此处记录顶级窗口在任务栏中显示的规则.综上所述:

只要应用程序创建了一个不拥有的窗口,Shell就会在任务栏上创建一个按钮.要确保窗口按钮位于任务栏上,请使用WS_EX_ APPWINDOW扩展样式创建无主窗口.要阻止窗口按钮放在任务栏上,请使用WS_EX_ TOOLWINDOW扩展样式创建无主窗口.作为替代方案,您可以创建隐藏窗口并使此隐藏窗口成为可见窗口的所有者.

有关更多讨论,请参阅Raymond Chen关于此事的文章.