Problem: Process erzeugen und MainWindowHandle verwenden
-
Hallo Leute,
ich starte ein Process, und verwende von diesem das Fenster (HWND). Der Process hat ja ein Property "MainWindowHandle" welcher diesen Handle darstellt. Allerding muss ich zwischen "Process.Start()" und verwendung des Handles 1-2 sekunden warten, weil der MainWaindowHandle noch noch direkt da ist.
var args = string.Format("\"{0}\" /console", "C:\\temp\\000000-MES (Client).RDP"); _rdpProcess = new Process { StartInfo = new ProcessStartInfo("mstsc", args) { UseShellExecute = true } }; Thread.Sleep(2000); xxx = rdpProcess .MainWindowHandle;
Ich habe nu ein Thread erzeugt, welcher solange wartet bis das MainWindowHandle existiert, und dann diesen erst zurück gibt. Allerdings ist das irgendwie unschön... gibt es da vll. doch ne ander Mögliochkeit?
grüße
-
Benutze die WaitForInputIdle-Methode um auf das Anzeigen des MainWindows zu warten (steht auch in der MSDN Hilfe zu MainWindowHandle -).
-
Danke für den Denkansatz, aber auch wenn ich es so mache
_rdpProcess.Start(); _rdpProcess.WaitForInputIdle(2000); rdpProcess.MainWindowHandle <== immer noch 0
is der hwnd nich
-
Erhöhe mal den Timeout (ist ja ein Maximalwert) und frag mal den Rückgabewert von WaitForInputIdle() ab (nur bei 'true' ist das Fenster im Idle-Modus).
-
Auch mit Timeout etc. und mit true als rückgabe kein gültiger fensterhandel.. ich hab mir überlegt die WinApi Variante CreateProcess zu verwenden, was meint ihr? Oder sonst welche tipps?