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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top