FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Hola. Espero que este mensaje no lo tomen como un mensaje basura. Vengo a avisar solamente que todavía no pude probar la solución de roman porque estoy tapado de trabajo. Solamente eso, así no piensan que solucioné mi problema sin explicar cómo.
Saludos! |
#2
|
|||
|
|||
Bueno, les comento que ya solucioné mi problema. Chau.
Jajaja no me voy a ir así nomás Lo solucioné con la ayuda de roman haciendo un leve cambio. En vez de utilizar GetFocus() usé una variable THandle y le asigné la ventana con GetForegroundWindow. Les muestro precisamente cómo quedó y cómo funciona:
Solamente recibe el nombre (que lo obtuve usando otra mini aplicación con GetClassName(Handle, Buffer, 255) y las mismas variables) y espera hasta que aparece focuseado, que por la lógica de mi aplicación es 100% seguro que va a estar focuseado aunque tarde mucho tiempo. El procedimiento lee el nombre del TWinControl (agradecimiento enorme a roman por explicarme que todo componente es una ventana ) y lo compara con el nombre que le pedís que encuentre. Si no lo encuentra se pausa 0.0250 segundos y vuelve a mirar. Nada más, muy simple. Muchas gracias a los que aportaron, a los que lo leyeron y no pudieron responder pero pensaron a ver si se les ocurría algo, a todos. Si algún moderador pudiera editar el nombre del topic y ponerle al principio "[RESUELTO]" y cerrarlo sería grandioso y que quede como ejemplo Saludos!!!!!!!!!!!!!! |
#3
|
||||
|
||||
Pero tú código no puede funcionar tal como está. La obtención del Handle debe estar dentro del ciclo.
// Saludos |
#4
|
|||
|
|||
Cita:
El handle lo agarro con GetForegroundWindow sí o sí, porque la ventana abierta y activa es la que tiene el componente. No te preocupes, ya lo probé y funciona como debe. Saludos. |
#5
|
||||
|
||||
Concuerdo con roman al advertir que ese código tiene algo que llama la atención. Handle tiene el valor de la ventana que deseas siempre que le de tiempo a estar abierta en ese momento. Pero el código, tal como está me hace pensar que o bien el bucle sobra, o la obtención del Hanle debe realizarse dentro del mismo. Si la función pretende esperar a que el nombre de la clase del Handle obtenido sea el que esperas, entonces tu función debe ser modificada a algo como esto:
Saludos. |
#6
|
|||
|
|||
Cita:
El handle, por otra parte, lo consigo correctamente y sin problemas porque justo antes de entrar en la función abro la ventana. No entiendo por qué les cuesta tanto creer que funciona perfectamente... |
#7
|
|||
|
|||
Hola...
Será que es por que si en ese preciso momento alguna otra ventana se coloca al frente (un popup de alguna otra aplicación), tu método puede recibir el handle de la ventana incorrecta y fallar. Saludos... |
#8
|
||||
|
||||
Cita:
Pero, en todo caso, si así te sirve, pues ¿quiénes somos nosotros para contradecirte? // Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
abrir aplicación externa desde delphi y detectar su cierre | petete2008 | API de Windows | 2 | 10-02-2012 11:44:23 |
Ejectuando una aplicacion externa | jandrorm | Varios | 5 | 09-02-2011 16:13:56 |
Manipular aplicación externa | oabel5 | API de Windows | 30 | 27-05-2010 07:04:41 |
Aplicacion externa a c++ | alloger | C++ Builder | 1 | 28-10-2006 00:37:09 |
Manipular una aplicacion externa | lookmydoom | API de Windows | 2 | 09-08-2006 22:22:52 |
|