C sharp - Process y SetParent

 
Vista:

Process y SetParent

Publicado por Iñaki (3 intervenciones) el 20/02/2008 11:57:44
Hola a todos

En mi aplicación tengo un contenedor y dentro lanzo formularios que contiene ejecutables. Mi problema es que necesito lanzar los ejecutables con un tamaño normal y después capturarlos en mi formulario, con el api SetParent. Al lanzar el exe en tamaño normal (p.StartInfo.WindowStyle = ProcessWindowStyle.NormalWink se ve como se lanza el exe y luego como lo captura en el formulario de mi contenedor, necesito que no se vea como se lanza el exe, quiero que cuando el exe este abierto lo capture.



Si lanzo el exe minimizado y una vez que este capturado, lo maximizo, no se ve como se lanza el exe, pero necesito lanzarlo en tamaño normal, para que no afecte al codigo interior del exe.



He visto en el windowstyle, la posibilidad de lanzarlo en modo “Hidden”, esta propiedad lanza el exe en forma oculta, pero el problema es que esa ventana no tiene handle y por tanto no lo puedo capturar (p.StartInfo.WindowStyle=ProcessWindowStyle.HiddenWink.



¿Alguna idea de cómo puedo solucionarlo? ¿Podría lanzar el exe, de forma que quedara detrás del form y no se viera como se abre?



//Codigo

p = new Process();

p.EnableRaisingEvents = true;

p.SynchronizingObject = this.Parent;

p.ErrorDataReceived += new DataReceivedEventHandler(ControladorError);

p.Exited += new EventHandler(ControladorSalir);

p.StartInfo.FileName = NombreEXE;

p.StartInfo.Arguments = Argumentos;

p.StartInfo.WorkingDirectory = DirectorioEjecucion;

p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

p.Start();

p.WaitForInputIdle();

appWin = p.MainWindowHandle;

titul = p.MainWindowTitle;

this.FindForm().Tag = p.Id.ToString();

while (int.Parse(appWin.ToString()) == 0)

{

Process nuc = Process.GetProcessById(p.Id);

appWin = nuc.MainWindowHandle;

titul = nuc.MainWindowTitle;

}

SetParent(appWin, this.Handle);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder