我一直在努力了解
Process.MainWindowHandle.
根据MSDN “主窗口是在进程启动时创建的窗口.初始化后,可以打开其他窗口,包括Modal和TopLevel窗口,但与进程关联的第一个窗口仍然是主窗口. (加重)
但是在调试时,我注意到MainWindowHandle似乎改变了价值…我没想到,特别是在咨询了上面的文档之后.
为了确认行为,我创建了一个带有定时器的独立WinForms应用程序,每100ms检查一次“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的值更改.
MainWindowHandleMystery http://i37.tinypic.com/11ky1yb.jpg
也许我误解了文档.
任何人都有光吗?