Mensajes [1] - Enviado el Miércoles 20 de Febrero de 2008 a las 08:15hs
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);