Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Principal";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

abajo

¿Cómo enviar un mensaje al sistema que una tecla es presionada? Encontrar ramas similares


Delphimun   (2001-12-20 12:10) [0]

¿Cómo enviar un mensaje al sistema que una tecla es presionada? Por ejemplo, pones en un temporizador este mensaje al sistema de que se presiona la tecla, y el usuario está trabajando actualmente en el Bloc de notas y que estas letras están escritas en el Bloc de notas que envió al sistema (que presionó la tecla)



gek   (2001-12-20 12:32) [1]

Obtienes un identificador de bloc de notas y lo envías a wm_keydown



Delphimun   (2001-12-20 13:10) [2]

Ya lo he descubierto (necesitaba no solo enviar el portátil, sino también el sistema general)
Aquí hay un ejemplo de faq que está interesado:

-------------------------------------------------- -----------------------
A continuación se muestra el procedimiento para enviar clics a cualquier
un control (control de ventana) que puede aceptar entrada de
el teclado Puedes usar esta técnica para encender las teclas.
NumLock, CapsLock y ScrollLock en Windows NT. La misma técnica funciona.
y en Windows 95 para CapsLock y ScrollLock pero no funciona para la clave
NumLock
Tenga en cuenta que hay cuatro procedimientos: SimulateKeyDown () -
emular pulsaciones (sin soltar) SimulateKeyUp () -
emular lanzamiento clave SimulateKeystroke () - emular un hit
en la tecla (presionar y soltar) y SendKeys (), lo que le permite flexiblemente
Controle los mensajes del teclado enviados.
SimulateKeyDown (), SimulateKeyUp () y SimulateKeystroke () reciben códigos
claves virtuales (clave virtural) (como VK_F1). Procedimiento
SimulateKeystroke () obtiene un parámetro adicional, útil cuando
emular haciendo clic en printscreen. Cuando este parámetro es cero todos
La pantalla se copiará al portapapeles. Si extra
el parámetro es igual a 1 solo se copiará la ventana activa.
Cuatro métodos de "clic de botón" demuestran el uso:
ButtonClick1 - incluye capslock ButtonClick2 - intercepta todo
Pantalla al portapapeles (portapapeles). ButtonClick3 - intercepta
Ventana activa al portapapeles (portapapeles). ButtonClick4: establece el enfoque en Editar y
le envía una cadena.
Ejemplo:

procedimiento SimulateKeyDown (clave: byte);
comenzar
keybd_event (Key, 0, 0, 0);
fin;

procedimiento SimulateKeyUp (clave: byte);
comenzar
keybd_event (Key, 0, KEYEVENTF_KEYUP, 0);
fin;

procedimiento SimulateKeystroke (clave: byte; extra: DWORD);
comenzar
keybd_event (Key, extra, 0,0);
keybd_event (Key, extra, KEYEVENTF_KEYUP, 0);
fin;

procedimiento SendKeys (s: string);
var i: entero;
bandera: bool;
w: palabra;
comenzar
{Obtener el estado de la tecla de bloqueo de mayúsculas}
flag: = no GetKeyState (VK_CAPITAL) y 1 = 0;
{Si se convierte en un bloqueo de mayúsculas
si bandera entonces
SimulateKeystroke (VK_CAPITAL, 0);
para i: = 1 a Longitud (s) hacer
comenzar
w: = VkKeyScan (s [i]);
{Si no hay error en la traducción de la clave}
si ((HiByte (w) <> $ FF) y (LoByte (w) <> $ FF)) entonces
comenzar
{Si la tecla requiere la tecla Mayús presionada - manténgala presionada}
si HiByte (w) y 1 = 1 entonces
SimulateKeyDown (VK_SHIFT);
{Enviar el VK_KEY}
SimulateKeystroke (LoByte (w), 0);
{Si la clave requiere la desplazar la tecla hacia abajo - soltarlo}
si HiByte (w) y 1 = 1 entonces
SimulateKeyUp (VK_SHIFT);
fin;
fin;
{si era un bloqueo de mayúsculas
si bandera entonces
SimulateKeystroke (VK_CAPITAL, 0);
fin;

procedimiento TForm1.Button1Click (Sender: TObject);
comenzar
{Cambiar el bloqueo de la tapa}
SimulateKeystroke (VK_CAPITAL, 0);
fin;

procedimiento TForm1.Button2Click (Sender: TObject);
comenzar
{Captura la pantalla}
{simulando presionando la tecla imprimir pantalla}
SimulateKeystroke (VK_SNAPSHOT, 0);
fin;

procedimiento TForm1.Button3Click (Sender: TObject);
comenzar
{Captura la ventana al portapapeles}
{simulando presionando la tecla imprimir pantalla}
SimulateKeystroke (VK_SNAPSHOT, 1);
fin;

procedimiento TForm1.Button4Click (Sender: TObject);
comenzar
{Establezca el foco en una ventana (control de edición) y envíe una cadena}
Aplicación.Procesos de proceso;
Edit1.SetFocus;
SendKeys ("Delphi es RAD!");
fin;
-------------------------------------------------- -------------------------

Ahora necesito rastrear el clic del usuario en el botón de Claudia (por ejemplo, el de Alfit) y anular este clic / reemplazarlo con el mío.




Páginas: 1 rama entera

Foro: "Principal";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

arriba









Memoria: 0.57 MB
Tiempo: 0.026 c
14-22414
wHammer
2001-11-12 10:48
2002.01.08
¿Delphi 5 y (o (xor)) C ++ Builder 5?


7-22451
Dmitri
2001-09-23 12:36
2002.01.08
Directiva {$ I}


1-22172
ASTARDO
2001-12-19 22:12
2002.01.08
¿La gente ayuda a Pliz?


1-22072
Garik
2001-12-19 11:08
2002.01.08
Cómo crear una instancia secundaria de TFrame dinámicamente


14-22347
roman001
2001-11-06 18:09
2002.01.08
Хостинг





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish Francés
gallego georgiano Alemán Griego criollo haitiano hebreo hindi Húngaro islandés Indonesian irlandés Italiana Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español