Pestaña de fondo de envío posterior al mensaje de VB
Cuando un usuario presiona una tecla del teclado, un chip dentro del teclado detecta esta operación y envía una señal al ordenador. ¿Cómo saber qué tecla se presionó? Todas las teclas de su teclado tienen un código llamado código de escaneo de teclado. Cuando presiona una tecla, el código de escaneo de esa tecla se transmite al sistema. Los códigos de escaneo son específicos del hardware y la misma tecla puede tener diferentes códigos de escaneo en diferentes teclados. El controlador del teclado pasa el código de escaneo a la computadora y luego al controlador del teclado. El controlador del teclado convierte códigos de escaneo en códigos virtuales de teclado. ¿Qué es el código ficticio? Dado que el código de escaneo está relacionado con el hardware y no es universal, para unificar la codificación de todas las teclas del teclado se propuso el concepto de código virtual. No importa qué teclado se utilice, el código virtual para la misma tecla es siempre el mismo, lo que permite identificar el programa. En pocas palabras, un código virtual es una constante que podemos ver a menudo, como VK_A, VK_B. Por ejemplo, el código virtual de la tecla A es 65, que se escribe como H41 en hexadecimal. Tenga en cuenta que la gente suele expresar códigos virtuales en hexadecimal. Después de que el controlador del teclado convierte el código de escaneo en un código virtual, pasa el código de escaneo para la operación del teclado junto con el código virtual y otra información al sistema operativo. Luego, el sistema operativo encapsula esta información en mensajes e inserta mensajes del teclado en la cola de mensajes. Finalmente, si nada más sale mal, la información del teclado se transmitirá a la ventana activa y la aplicación en la que se encuentra la ventana activa recibirá la información, sabrá qué tecla del teclado se presionó y decidirá cómo responder a la llamada. usuario. Este proceso se puede expresar brevemente de la siguiente manera:
El usuario presiona una tecla ----- el controlador del teclado pasa este evento al sistema operativo ----- el sistema operativo inserta el evento del teclado en el cola de mensajes - --- Los mensajes del teclado se envían a la ventana actualmente activa
Al comprender este proceso, podemos programar ciertas partes del proceso para simular las operaciones del teclado. Hay muchas formas de implementar la simulación de teclado en VB y presentaremos algunas típicas.
1. Simulación a nivel local
Como se puede ver en el proceso anterior, los eventos del teclado finalmente se envían a la ventana activa y luego hacen que el programa de destino responda. El método de simulación más directo es falsificar mensajes de teclado y enviarlos directamente al programa de destino. Jaja, esto es realmente muy simple. Entre las funciones API proporcionadas por Windows, hay varias funciones que pueden enviar mensajes directamente al programa de destino. Las más utilizadas son SendMessage y PostMessage. La diferencia entre ellas es que la función PostMessage envía directamente. mensajes al programa de destino. Todavía ignora el mensaje, ¡pero SendMessage quiere enviar el mensaje! Después de enviar el mensaje, debe esperar a que el programa de destino devuelva algo.
Lo que debe tenerse en cuenta aquí es que la función PostMessage debe usarse para simular mensajes de teclado. Es incorrecto usar SendMessage (porque los mensajes de teclado simulados no necesitan devolver un valor; de lo contrario, el programa de destino no responderá), ¡recuerde! La declaración VB de la función PostMessage es la siguiente:
Declarar función PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any ) As Long
El parámetro hwnd es el nombre del control en el programa de destino al que se enviará el mensaje. El parámetro hwnd es el identificador del control en el programa de destino al que se enviará el mensaje. El parámetro wMsg es el tipo de mensaje, que indica qué tipo de mensaje se enviará. Finalmente, los parámetros wParam y lParam son adicionales. datos para el mensaje. El contenido específico del mensaje está determinado por el mensaje.
Mire el parámetro wMsg, que se utiliza para simular pulsaciones de teclas. La siguiente información de teclado se usa comúnmente:
WM_KEYDOWN significa presionar una tecla normal
WM_KEYUP significa soltar una tecla normal
WM_SYSKEYDOWN significa presionar una tecla del sistema, por ejemplo Alt
WM_SYSKEYUP significa liberar una tecla del sistema, como Alt
WM_SYSKEYUP significa que se ha liberado la clave del sistema, como Alt