FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Devolver Foco a una aplicación creada con ShellExecuteEx
Hola !
Abro una nueva aplicación con ShellExecuteEx a través de un TShellExecuteInfo y si no estoy errado, debería poder obtener el Handle de la aplicación recién creada con el valor hProcess, no ??
La variable Aux_Handle debería contener el Handle del Browser de internet que esté configurado por defecto en el sistema y que acabo de abrir. Lo que quiero conseguir es que más tarde, cuando se devuelva el foco a mi aplicación Delphi, se realicen una serie de operaciones y finalmente se devuelva el foco a la ventana del browser que acabo de abrir. Para ello utilizo el evento OnActivate del Form en cuestión que previamente puse en otro sitio a Form.OnActivate := Form.ActivateParticular :
Pero no me devuelve el foco a la ventana del explorador de internet anterior. Qué estoy haciendo mal ?
__________________
Piensa siempre en positivo ! |
#2
|
||||
|
||||
El problema está en que ExecInfo.hProcess es el Handle del proceso, no de la ventana principal. Ten en cuenta que no todos los procesos tienen ventanas.
Deberás enumerar las ventanas para encontrar la que te interesa contrastando con tu proceso (hProcess o Pid). Tambien puedes tratar de encontrarla con FindWindow. Saludos. Última edición por escafandra fecha: 29-04-2011 a las 08:27:17. |
#3
|
||||
|
||||
Gracias por responder, voy a mirar lo que comentas.
El problema de FindWindow es que necesito saber qué ventana debo de buscar, y lo que quiero abrir con el proceso indicado, es un explorador de internet, cualquier que esté configurado por defecto en el sistema. Podría mirar cual está configurado por defecto, y después también mirar si existen varias copias abiertas del mismo, pero pensaba que con ShellExecuteEx sería capaz de obtener sin más, el handle de la ventana que acababa de abrir. Lo que sí he podido chequear, es que ExecInfo.hProcess es siempre 0 en el caso de que ejecute el código indicado. Realmente no sé por qué es así.
__________________
Piensa siempre en positivo ! |
#4
|
||||
|
||||
Cita:
Cita:
|
#5
|
||||
|
||||
Tal como te comenta Roman, quizás debas forzar que se abra un proceso nuevo si o si. Yo usaría CreateProcess.
Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Distribuir una Aplicacion creada con Delphi 2007 y Firebird. | Adrian Murua | Firebird e Interbase | 2 | 18-05-2008 16:13:01 |
Devolver foco desde Form No Modal al control llamante | gluglu | Varios | 8 | 22-06-2007 08:35:41 |
Aplicacion creada en Delphi 6 WindowsMe no funciona en WindowsXP | Jgarmel | Conexión con bases de datos | 5 | 16-07-2006 19:16:26 |
Devolver el foco a aplicacion | Coco_jac | Varios | 2 | 13-10-2005 16:38:33 |
instalador de una aplicación creada con delphi | emeceuy | Varios | 1 | 03-06-2003 07:55:42 |
|