Wie erhalten Sie das Hauptfenster eines Prozesses in C #?

8

Das Ziel besteht darin, ein Windows-Formular programmgesteuert zu starten, sein Handle zu erhalten und Informationen an die Funktion wndProc () zu senden, die die Funktion SendMessage () von Win Api verwenden.

Ich habe den SendMessage () -Teil erledigt, aber das Problem besteht jetzt darin, das Handle des Formulars zu erhalten, nachdem der Prozess gestartet wurde.

Meine erste Vermutung war, dass die MainWindowHandle-Eigenschaft von Process mir das Handle liefern würde, nach dem ich suche, aber nachdem ich den Prozess gestartet habe, bleibt MainWindowHandle gleich 0 und der folgende Code zeigt nicht das Handle des Prozesses, den ich gerade gestartet habe:

%Vor%

Kann mir jemand sagen, wie man das macht und ob es tatsächlich gemacht werden kann?

    
John Smith 03.06.2012, 02:41
quelle

1 Antwort

9

Manchmal dauert der Prozess eine Sekunde, bis alles eingerichtet ist, aber das Objekt wird sofort zurückgegeben.

Aus diesem Grund sollten Sie ein wenig warten, damit der Prozess es wirklich starten kann, und dann wird MainWindowHandle entsprechend eingestellt, um konsumiert zu werden.

%Vor%

Eine andere Möglichkeit, es auf eine schlauere Weise zu tun, wäre:

%Vor%

Dadurch wird der Prozess gestartet und gewartet, bis der MainWindowHandle nicht leer ist.

    
SimpleVar 03.06.2012, 04:51
quelle

Tags und Links