Wie wissen, wann ein winform von Process.Start geladen wird?
Frage
Ich bin in einer Windows (c # .net 3.5) und auf einen Klick startet eine andere externe Anwendung (auch .NET 3.5) mit Process.Start () und verstehen, wenn es verfügbar ist, nachdem ich es ins Leben gerufen.
ProcessStartInfo psInfo = new ProcessStartInfo(@"MyApplication.exe");
psInfo.RedirectStandardOutput = true;
psInfo.RedirectStandardError = true;
psInfo.UseShellExecute = false;
psInfo.CreateNoWindow = true;
Process proc = Process.Start(psInfo);
proc... IsFullyLoaded()?
Wie kann ich es tun?
Lösung
für den Prozess zu warten, seine Form zu erstellen, rufen Sie die WaitForInputIdle
Methode.
Um herauszufinden, ob es bereit ist, versuchen Sie dies:
bool isReady = proc.WaitForInputIdle(0);
Oder alternativ
bool isReady = (proc.MainWindowHandle != IntPtr.Zero);
Sie können auch die Mainwindowhandle Eigenschaft verwenden, um Nachrichten an das Formular senden mit der SendMessage
API-Funktion
Andere Tipps
Sie können ein Argument für den Prozess passieren lässt sie wissen, wie es gestartet wurde.
psInfo.Arguments = "-startedByProcess";
haben dann das Kind Prozess Rückruf an den Eigentümer Prozess lassen Sie es wissen, dass es begonnen hat, über Remoting oder so ähnlich.