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

发布于 2024-11-14 16:30:09 字数 505 浏览 1 评论 0原文

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

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

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

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

据我所知,Windows 任务栏 API 更多的是用于执行诸如向现有图标添加菜单或进度条之类的操作,我找不到访问我正在查找的信息的方法。 IO是不是搞错了?

谢谢!

So, I'm writing a dock/taskbar like application. What I want to do is pretty simple, display a list of running programs.

I've found lots of ways to enumerate all running processes, but after hours of google searching, I can't find a way to determine which of those should be displayed in a taskbar.

Take for example the Windows Task Manager. It has two tabs, one entitled Applicationss, and one entitled processes. Processes contains all of the system processes, whereas programs somehow gets a list of "applications" running on the computer. I want to be able to access the list of applications in my program, rather than the list of processes, so that in my pseudo-taksbar I'm not displaying things like taskhost.exe, winlogon.exe, etc.

Ideally I would be able to get the exact list of programs displayed in the taskbar. 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.

As far as I can tell, the Windows Tasksbar API is more for doing things like adding menups or progress bars to existing icons, I couldn't find ways to access the information I'm looking for. Am IO mistaken?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泼猴你往哪里跑 2024-11-21 16:30:09

顶级窗口在任务栏中显示的规则已记录在

Shell 在
每当应用程序出现时任务栏
创建一个不被拥有的窗口。到
确保窗口按钮是
放置在任务栏上,创建一个
具有 WS_EX_ APPWINDOW 扩展样式的无主窗口。为了防止窗口按钮
放置在任务栏上,创建
具有 WS_EX_ TOOLWINDOW 扩展样式的无主窗口。作为替代方案,您可以创建一个隐藏的
窗口并使其隐藏
window 你可见的所有者
窗口。

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

The rules for which top level windows appear in the taskbar are documented here. In summary:

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.

For more discussion take a look at Raymond Chen's article on the matter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文