Pregunta

Estoy en una WindowsForm (C # .NET 3.5) y el clic de un botón de lanzar otra aplicación externa (también .NET 3.5) usando Process.Start () y entiendo cuando está disponible después de que se han puesto en marcha.

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

¿Cómo puedo hacerlo?

¿Fue útil?

Solución

Para esperar a que el proceso para crear su forma, llamar a la método WaitForInputIdle .

Para saber si está listo, intente lo siguiente:

bool isReady = proc.WaitForInputIdle(0);

O, en su defecto,

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

También puede utilizar la propiedad MainWindowHandle para enviar mensajes al formulario utilizando el SendMessage función API

Otros consejos

Se puede pasar un argumento al proceso de dejar que se sabe que se puso en marcha.

psInfo.Arguments = "-startedByProcess";

A continuación, tendrá la devolución de llamada proceso secundario al proceso propietario para hacerle saber que se ha iniciado, a través de la interacción remota o algo por el estilo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top