我一直在尝试理解 Process.MainWindowHandle。
根据MSDN的说法,“主窗口是在启动进程时创建的窗口。初始化后,可能会打开其他窗口,包括模态和顶级窗口,但与进程关联的第一个窗口仍然是主窗口。”(强调添加)
但在调试过程中,我发现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();
}
当您在 Visual Studio 中点击下拉菜单时,可以看到 MainWindowHandle 的值发生了变化。
也许我误解了文档。
有人能够解释一下吗?