【发布时间】:2013-03-16 10:41:21
【问题描述】:
EnumWindows 和EnumChildWindows 抓住了许多窗口句柄。我只想要每个正在运行的进程的最高值。他们中的很多人从Process.GetProcesses() 中返回 0,这是怎么回事?
我浏览并尝试了process.Refresh(); 并没有得到好的结果。另请阅读其他文章。如何正确抓取所有进程MainWindowHandle?
再次重申:EnumWindows 不仅获取主进程句柄,它还为每个进程获取多个句柄。
using System.Diagnostics;
Process[] p1 = Process.GetProcesses();
foreach (Process t in p1)
{
listBox3.Items.Add(t.ProcessName + ": " + t.MainWindowHandle.ToString());
}
【问题讨论】:
-
你能分享你已有的代码吗?
-
不,每个进程都有太多。他们从来没有正确解决它......它没有来自 Process.MainWindowHandle 的窗口句柄......它是 0;
-
The real answer is hidden further down the page。 Windows 不会跟踪每个进程的“主窗口”。它无法知道应用程序认为它的“主”窗口是什么,因为应用程序可以创建多个顶级窗口。
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。