使用 C# 在没有 P/Invoke 的情况下枚举 Windows XP 中任务栏上的窗口

发布于 2024-09-30 01:12:11 字数 98 浏览 7 评论 0原文

有没有什么方法可以只检索任务栏上的窗口?

我想制作一个自定义“任务栏”,它将按任何顺序对应用程序进行分组(而不仅仅是像默认 Windows 任务分组那样按常见顺序)。

Is there any method of retrieving only windows on the taskbar?

I want to make a custom "taskbar" that will group APPs in any order (not just in common order like default windows task grouping).

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

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

发布评论

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

评论(2

若有似无的小暗淡 2024-10-07 01:12:11

您必须使用 P/Invoke。不幸的是,没有标准方法来确定窗口是否出现在任务栏(或 alt+tab 中):您只能猜测。

这是 VB 中一个相当古老的示例: http://www.thescarms.com/VBasic/alttab.aspx

OnTopReplica 中,我以类似的方式实现了它。您可以查看源代码(查看OnTopReplica/WindowSeekers/ TaskWindowSeeker.cs)。

You'll have to use P/Invoke. Unfortunately, there is no standard way to determine whether a window would appear in the taskbar (or in alt+tab): you can only guess.

Here's a pretty old example in VB: http://www.thescarms.com/VBasic/alttab.aspx

And in OnTopReplica, I implemented it in a similar manner. You can take a look at the source code (check out OnTopReplica/WindowSeekers/TaskWindowSeeker.cs).

关于从前 2024-10-07 01:12:11

一般来说,如果没有 P/Invoke,则不会。

但是,如果您只关心 .NET 进程内的托管 Windows 窗体窗口,则可以循环遍历 Application.OpenForms 并检查属性,尤其是 Form.ShowInTaskbar。对于 WPF,它是 Application.Windows

Generally, without P/Invoke -- no.

However, if you only care about managed, Windows Forms windows that are within your .NET process, you can loop through Application.OpenForms and examine properties, especially Form.ShowInTaskbar. For WPF, it is Application.Windows.

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