【发布时间】:2008-09-07 10:14:23
【问题描述】:
我一直在努力理解Process.MainWindowHandle。
根据 MSDN; "主窗口是进程启动时创建的窗口。初始化后,可能会打开其他窗口,包括Modal和TopLevel窗口,但与进程关联的第一个窗口仍然是主窗口。” (强调)
但在调试时,我注意到 MainWindowHandle 似乎改变了值......这是我没想到的,尤其是在查阅了上面的文档之后。
为了确认行为,我创建了一个带有计时器的独立 WinForms 应用程序,每 100 毫秒检查一次“DEVENV”(Visual Studio) 进程的 MainWindowHandle。
这是这个测试应用的有趣部分...
IntPtr oldHWnd = IntPtr.Zero;
void GetMainwindowHandle()
{
Process[] processes = Process.GetProcessesByName("DEVENV");
if (processes.Length!=1)
return;
IntPtr newHWnd = processes[0].MainWindowHandle;
if (newHWnd != oldHWnd)
{
oldHWnd = newHWnd;
textBox1.AppendText(processes[0].MainWindowHandle.ToString("X")+"\r\n");
}
}
private void timer1Tick(object sender, EventArgs e)
{
GetMainwindowHandle();
}
当您(例如)单击 VS 内的下拉菜单时,您可以看到 MainWindowHandle 的值发生变化。
也许我误解了文档。
谁能解释一下?
【问题讨论】:
-
因为这个错误,我损失了 10 个小时。谢谢女士!