解决方案
这篇文章应该告诉你具体做什么,它展示了如何构建自己的任务开关,并包括枚举所有窗口所需的代码,并确定它们是否是<!> quot; tasks <!> quot;它将向您展示如何使用PrintWindow api获取XP的预览。
http://msdn.microsoft.com/en-us/library /ms997649.aspx
此外,博客文章讨论用于确定Alt + Tab视图中显示内容的算法。基本上你需要检查WS_EX_APPWINDOW和WS_EX_TOOLWINDOW以及窗口是否拥有所有者。
其他提示
我没有尝试过,但我怀疑是这样的:
using System.Diagnostics;
static void MyFunc()
{
Process[] processes = Process.GetProcesses();
foreach(Process p in processes)
{
if (p.MainWindowHandle != 0)
{ // This is a GUI process
}
else
{ // this is a non-GUI / invisible process
}
}
}
重点是检查WindowHandle的每个进程。
@ abelenky17
我怀疑这不会涵盖所有情况,例如,有些进程拥有多个顶级窗口(都出现在任务管理器中)。 考虑例如:FireFox,Windows资源管理器,IE等......这些应用程序可以在桌面上有多个窗口。 此外,它不会正确处理终端会话场景(因为您枚举了系统中运行的所有进程)。
@Dan C。
做这样的事情:
p.ProcessName != "explorer"
对你好吗?闻起来很糟糕。
不隶属于 StackOverflow