Question

Je suis dans un WindowsForm (c # .net 3.5) et d'un simple clic lance une autre application externe (également .net 3.5) en utilisant Process.Start () et de comprendre quand il est disponible après avoir lancé il.

    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()?

Comment puis-je le faire?

Était-ce utile?

La solution

Pour attendre le processus pour créer sa forme, appelez le méthode WaitForInputIdle .

Pour savoir s'il est prêt, essayez ceci:

bool isReady = proc.WaitForInputIdle(0);

Ou, alternativement,

bool isReady = (proc.MainWindowHandle != IntPtr.Zero);

Vous pouvez également utiliser la propriété MainWindowHandle pour envoyer des messages à la forme en utilisant le la fonction API de SendMessage

Autres conseils

Vous pouvez passer un argument au processus faisant savoir comment il a été lancé.

psInfo.Arguments = "-startedByProcess";

Alors que le rappel de processus enfant au processus de propriétaire pour le faire savoir qu'il a commencé, via Remoting ou quelque chose comme ça.

scroll top