Wie bekommt man eine Prozess' main-Fenster-handle in C#?

Ziel ist es, programmgesteuert starten einer Windows Form, seinen Griff, und senden Sie info, um seine wndProc () - Funktion mit Win-Api SendMessage () - Funktion.

Bekam ich die SendMessage () - Teil gekümmert, aber jetzt ist das problem immer die form handle, nachdem der Prozess gestartet wurde.

Meine erste Vermutung war, dass Prozess' MainWindowHandle-Eigenschaft würde mich der Griff, ich bin auf der Suche, aber nachdem ich den Prozess starten MainWindowHandle bleibt gleich 0 und der folgende code zeigt nicht den Griff der Prozess, den ich gerade gestartet:

foreach (Process p in Process.GetProcesses())
{
Console.WriteLine(p.MainWindowHandle);
}

Kann mir jemand sagen, wie Sie dies tun und ob es überhaupt gemacht werden kann?

  • Versuchen Sie Thread.Sleep(3000); nach dem Start des Prozesses, zu sehen, ob das Ergebnis anders. Auch, welchen Prozess werden Sie starten? Nicht einmal ein Fenster haben?
  • es scheint so, als ob man der thread hat den trick. Dank
  • kannst du deinen Kommentar als Antwort?
  • Getan. Fand auch einige mehr Sachen hinzufügen, die in es, um tatsächlich machen es Antwort-würdig.
  • Was war der Punkt, der es, sowieso? Es sieht nicht wie er ist sich der Abnahme-Funktion.
InformationsquelleAutor John Smith | 2012-06-03
Schreibe einen Kommentar