Ich habe versucht zu verstehen Process.MainWindowHandle.
Laut MSDN; "Das Hauptfenster ist das Fenster, das erstellt wird, wenn der Prozess gestartet wird. Nach der Initialisierung können andere Fenster geöffnet werden, einschließlich der Modal- und Top-Level-Windows, aber das erste Fenster, das mit dem Prozess verbunden ist, bleibt das Hauptfenster." (Hervorhebung hinzugefügt)
Aber während des Debuggens fiel mir auf, dass sich der MainWindowHandle-Wert zu ändern schien... was ich nicht erwartet hatte, insbesondere nach Konsultation der oben genannten Dokumentation.
Zur Bestätigung des Verhaltens habe ich eine eigenständige WinForms-App mit einem Timer erstellt, um alle 100 ms das MainWindowHandle des "DEVENV" (Visual Studio) Prozesses zu überprüfen.
Hier ist der interessante Teil dieser Test-App...
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();
}
Man kann den Wert von MainWindowHandle ändern sehen, wenn man (zum Beispiel) in VS auf ein Dropdown-Menü klickt.
Vielleicht habe ich die Dokumentation falsch verstanden.
Kann mir jemand Licht ins Dunkel bringen?
0 Stimmen
Ich habe wegen dieses Fehlers 10 Stunden verloren. Danke MS!