FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Hook de Teclado + DLL
Hola queria preguntar si alguien me puede ayudar con este tema, estoy intentando que mi aplicacion, estando minimizada o en el trayicon, responda a una combinacion de teclas (CTRL + 1 y que cambie el color de un shape de su formulario por ejemplo) estando como ventana principal, cualquier otra aplicacion.
He visto que hay que crear una DLL y por medio de los Hooks de las apis hacerlo pro no se como. Alguien me puede ayudar?? si no, al menos saber como tengo que declarar las funciones en la DLL y como poder llamarlas desde la aplicacion, tengo la inicializacion del hook en un DLL pro no puedo llamarlas desde mi aplicacion, o no se como hacerlo. Agradeceria cualquier ayuda Muchas Gracias. |
#2
|
||||
|
||||
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
||||
|
||||
Aunque algo más sencillo podría ser usar RegisterHotKey con la cual le indicamos al sistema que nos mande un mensaje cada vez que la tecla registrada se oprima, independientemente de si nuestra aplicación tiene o no el foco.
// Saludos |
#4
|
|||
|
|||
El problema de la documentacion que hay aqui y a lo que te refieres jachguate, es que esta en Delphi y no tengo ni idea, he tratado de traducirlo pro no lo consigi
¿A que te refieres Roman con RegisterHotKey? es un componente? Si es un componente y lo que hace es mandarme un mesaje con la combinacion de teclas pulsada,que mi aplicacion actue en consecuencia, y luego devuelva el control a la aplicacion que estaba antes en primer plano me podria servir y mucho. Es que para que te hagas una idea mi aplicacion hace de servidor. y trabajo con otra que hace de cliente, entonces tengo que poder hacer cambios en el servidor mediate esa una combinacion de teclas, para ver como responde el cliente, que es el que tengo que estar visualizando en todo momento. Espero que se entienda cual es el objetivo. Muchas gracias a los dos por responder |
#5
|
||||
|
||||
Hola,
Algo así podría hacerse, más o menos, tratándose de Delphi:
|
#6
|
|||
|
|||
Muchas gasias dec
Aunque ya digo que en Delphi estoy un poco pez.. tratare de traducirlo y ya contare que tal ha ido. Y si lo logro hacer funciona ya dejare el codigo. gracias por vuestras respuestas |
#7
|
||||
|
||||
Hola,
Más o menos: Código:
void __fastcall TForm1::FormCreate(TObject *Sender) { Application->OnMessage = AppMessage; // // 79 es el código ASCII de la letra "O". No he conseguido encontrar la función // correspondiente a "Ord" (en Delphi) aquí en C++ Builder. He probado con // Integer("O") y con Cardinal("0"), pero, no funciona, así que al cabo he optado // por pasar como tercer parámetro de "RegisterHotKey" el número 79, que ya sabes // lo que quiere significar. ;) // RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey"), MOD_CONTROL, 79); } void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { UnregisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey")); } // Declarado en la cláusula "private" de "TForm1" // void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled) { if (Msg.message == WM_HOTKEY) { if ( (LOWORD(Msg.lParam) == MOD_CONTROL) && (HIWORD(Msg.lParam) == 79) ) ShowMessage("Pulsaste las teclas CTRL + O"); } } Última edición por dec fecha: 02-12-2005 a las 00:28:43. Razón: Adjuntar archivo. |
#8
|
|||
|
|||
Muchas Gracias David, el fin de semana hare pruebas y ya te comentare
|
#9
|
|||
|
|||
Funciona Perfectamente
Bueno David, he utilizado el codigo que me pusiste en mi aplicacion y hace exactamente lo que necesitaba asi que me ha venido de perlas. Solo una aclaracion, tal vez lo que querias buscar en cuanto a Ord("O") en c++ Builder creo que se hace asi: (int)'O' al menos lo uso asi y funciona.
RegisterHotKey(Application->Handle, GlobalAddAtomA("MiHotKey"), MOD_CONTROL, (int)'O'); De nuevo Agradecerte el codigo porque me ha venido genial |
#10
|
||||
|
||||
Hola,
Cita:
|
#11
|
|||
|
|||
Yo he probado eso del registerhotkey y no me ha funcionado la verdad
no me pilla la pulsacion de la tecla o seguramente es porque no lo entiendo del todo o falta algo de codigo que no se poner... a ver si alguien pudiera explicarme Gracias |
#12
|
||||
|
||||
Hola,
i_berbeu, no puede ayudársete si no das más datos, o eres más preciso. Decir: Cita:
Cita:
|
|
|
|