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)
-   -   Simular tecla @ pulsada (https://www.clubdelphi.com/foros/showthread.php?t=67530)

angelmt 21-04-2010 19:58:17

Simular tecla @ pulsada
 
Hola a todos

Por favor echarme una mano porque estoy ahora mismo atascado.

Como puedo enviar a una caja de texto el caracter @ siendo una aplicacion distinta a la mia.

uso keybd_event para todos los caracteres ,pero con la @ no consigo hacerlo

Un saludo

duilioisola 21-04-2010 22:00:33

La arroba tiene el código 64.
Has probado a enviarle ese número?

angelmt 21-04-2010 23:42:07

Hola , si lo he probado pero no hace nada

escafandra 26-04-2010 19:17:54

Prueba así:
Código Delphi [-]
keybd_event(VK_RMENU,0,0,0);
keybd_event(VkKeyScan('@'),0,0,0);
keybd_event(VK_RMENU, 0, KEYEVENTF_KEYUP, 0);

Saludos.

angelmt 26-04-2010 22:06:37

Funciona perfecto!!

Muchisimas gracias.

Un saludo

escafandra 26-04-2010 22:41:15

Aunque para la mayoría de los teclados con formato español va a funcionar, puede darse el caso de que en alguno falle. Es debido a que @ resulta de la combinación de teclas. El código podría complicarse un poco para conseguir una funcionalidad mas global...

Saludos.

escafandra 26-04-2010 23:38:09

Para nutrir y completar un poco el tema:

Código Delphi [-]
procedure Keyb_Event(C: CHAR);
var
  S: WORD;
begin

   S:=  VkKeyScan(C);
   if(S and $0100) <> 0 then keybd_event(VK_SHIFT,0,0,0);
   if(S and $0200) <> 0 then keybd_event(VK_LCONTROL,0,0,0);
   if(S and $0400) <> 0 then keybd_event(VK_LMENU,0,0,0);

   keybd_event(S,0,0,0);
   keybd_event(S,0,KEYEVENTF_KEYUP,0);

   if(S and $0100) <> 0 then keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
   if(S and $0200) <> 0 then keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0);
   if(S and $0200) <> 0 then keybd_event(VK_LMENU,0,KEYEVENTF_KEYUP,0);

end;

Ejemplo de uso:
Código:

Keyb_Event('@');
Saludos.

angelmt 27-04-2010 02:39:45

Muchas gracias nuevamente.

Esto ultimo me viene aun mejor para lo que quiero hacer...era justo lo que necesitaba.

Un saludo


La franja horaria es GMT +2. Ahora son las 15:56:51.

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