Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Capturar todas las teclas. (https://www.clubdelphi.com/foros/showthread.php?t=59900)

rauros 12-09-2008 01:05:13

Capturar todas las teclas.
 
Saludos a todos. Me gustaría capturar todas las teclas pulsadas aún que no tengan de foco mi aplicación, como HotKey pero sin tener que registrar todas las teclas (ya que ni se pueden todas, y que sería engorroso). Se algo de la interrupción de teclado en ensamblador, pero nunca he llegado a usarla. Muchas gracias a todos.

Neftali [Germán.Estévez] 12-09-2008 08:36:33

Debes buscar ejemplos sobre Hook's de teclado. Es un tema que ya hemos hablado otras veces. Para ello debes crear una DLL con los métods para instalar y desinstalar el Hook que se llamarán desde tu aplicación.

* SetWindowsHookEx
* UnhookWindowsHookEx

vejerf 16-09-2008 10:12:15

Hola Neftali...
aprovecho este hilo para lanzar una pregunta. Aunque ya pregunte una vez sobre este tema no me quedó nada claro ni conseguí hacer funcionar lo que pretendía y tiene algo q ver con este hilo.
Yo lo que pretendo es en vez de capturar es lanzar combinaciones de teclas a una aplicación, el Google Earth en concreto, pero no he logrado hacerlo funcionar. Si alguien pudiese enseñarme algún ejemplo en el que lanzase alguna combinación de teclas a Google Earth estaría muy agradecido.

Muchas gracias.

cHackAll 16-09-2008 16:01:06

El hilo del que habla vejeref es éste, ya que el problema periste te pido aclares una cosa que me confundió en el momento de intentar ayudarte; dices necesitar enviar una combinación de teclas a una determinada aplicacion externa pero en el hilo anterior (post #9), dices que te ha funcionado enviar WM_CLOSE a Aplicacion.GetMainHwnd que no es externa sino a la propia...

vejerf 17-09-2008 09:43:07

Hola cHackAll,
Intentaré explicarme un poco mejor... Yo tengo mi aplicación y desde ella llamo a Google Earth y para situarlo en mi aplicación la "mantengo" dentro de un TPanel, pero a mi modo de entender Google Earth sigue siendo una aplicación externa. La idea que persigo es dar desde mi menú el menú de Google Earth. Para ello lo que se me había ocurrido era cuando alguien hace click en un item de mi menú relacionado con Google Earth, enviarle a Google Earth la correspondiente secuencia de teclas con SendMessage o similar. Es verdad que no he logrado hacerlo funcionar y no sé si el fallo está en la forma de enviar las teclas o en otra cosa. Sin embargo, sí que me funcionó como ya expuse en el otro hilo el mensaje WM_CLOSE a Aplicacion.GetMainHwnd. El mensaje es externo porque Aplicacion es una variable de tipo IApplicationGE del COM API de Google Earth. Digamos que es el punto de entrada. Quizás el nombre de la variable no es el más adecuado porque podría confundirse con mi aplicación. Quizás hubiese sido más conveniente llamarla AplicacionGE. Pues así estamos, si uso:
Código Delphi [-]
SendMessage(AplicacionGE.GetMainHwnd,WM_CLOSE,0,0);
sí que funciona. Sin embargo cualquier otra cosa que he intentado nada de nada.

Gracias de nuevo por tu interés cHackAll.


La franja horaria es GMT +2. Ahora son las 13:33:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi