使用Windows API或WMI确定进程是否显示在任务栏中
作者:互联网
所以,我正在写一个像应用程序一样的dock / taskbar.我想要做的很简单,显示正在运行的程序列表.
我找到了很多方法来枚举所有正在运行的进程,但经过几个小时的谷歌搜索,我找不到一种方法来确定哪些应该在任务栏中显示.
以Windows任务管理器为例.它有两个选项卡,一个标题为Applicationss,另一个标题为进程.进程包含所有系统进程,而程序以某种方式获取计算机上运行的“应用程序”列表.我希望能够访问我的程序中的应用程序列表,而不是进程列表,以便在我的伪taksbar中我不显示taskhost.exe,winlogon.exe等内容.
理想情况下,我将能够获得任务栏中显示的确切程序列表.我的程序是在Python中,我有Windows API和WMI访问,但如果我必须为C函数编写python包装器,我会这样做.
据我所知,Windows Tasksbar API更适用于将menups或进度条添加到现有图标,我无法找到访问我正在寻找的信息的方法.我错了吗?
谢谢!
解决方法:
顶级窗口出现在任务栏中的规则记录在here中.总结:
The Shell creates a button on the
taskbar whenever an application
creates a window that isn’t owned. To
ensure that the window button is
placed on the taskbar, create an
unowned window with the WS_EX_ APPWINDOW extended style. To prevent the window button from
being placed on the taskbar, create
the unowned window with the WS_EX_ TOOLWINDOW extended style. As an alternative, you can create a hidden
window and make this hidden
window the owner of your visible
window.
有关更多讨论,请参阅Raymond Chen’s article.
标签:taskbar,python,windows,winapi 来源: https://codeday.me/bug/20190826/1735368.html