Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C枚举windows XP中任务栏上的窗口,而不使用P/Invoke#_C#_.net_Windows Xp_Taskbar - Fatal编程技术网

C# 使用C枚举windows XP中任务栏上的窗口,而不使用P/Invoke#

C# 使用C枚举windows XP中任务栏上的窗口,而不使用P/Invoke#,c#,.net,windows-xp,taskbar,C#,.net,Windows Xp,Taskbar,是否有任何方法仅检索任务栏上的窗口 我想制作一个自定义的“任务栏”,它可以按任意顺序对应用程序进行分组(而不仅仅是按默认的windows任务分组这样的普通顺序)。一般来说,没有p/Invoke--no 但是,如果您只关心.NET进程中的托管Windows窗体窗口,则可以循环使用Application.OpenForms并检查属性,尤其是Form.ShowInTaskbar。对于WPF,它是Application.Windows您必须使用p/Invoke。不幸的是,没有标准的方法来确定窗口是否会出

是否有任何方法仅检索任务栏上的窗口


我想制作一个自定义的“任务栏”,它可以按任意顺序对应用程序进行分组(而不仅仅是按默认的windows任务分组这样的普通顺序)。

一般来说,没有p/Invoke--no


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

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

下面是VB中一个非常古老的示例:


在年,我以类似的方式实现了它。您可以查看(签出
OnTopReplica/WindowSeekers/TaskWindowSeeker.cs
)。

我想复制任务栏项目。到目前为止,对于p/invoke,我能够准确地猜测,但这只是猜测。例如,计算器不是应用程序窗口。即使它显示在任务栏中,我也必须明确检查字符串“Calculator”,这不是好代码。我希望有办法确定,但我找不到。