2009-06-20 25 views

Respuesta

1

La función SendInput acepta una matriz de estructuras de ENTRADA. Las estructuras de ENTRADA pueden ser un evento de mouse o teclado. El keyboard event structure tiene un miembro llamado wVk que puede ser cualquier tecla en el teclado. El archivo de encabezado Winuser.h proporciona definiciones de macro (VK_ *) para cada clave.

5
INPUT input; 
WORD vkey = VK_F12; // see link below 
input.type = INPUT_KEYBOARD; 
input.ki.wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC); 
input.ki.time = 0; 
input.ki.dwExtraInfo = 0; 
input.ki.wVk = vkey; 
input.ki.dwFlags = 0; // there is no KEYEVENTF_KEYDOWN 
SendInput(1, &input, sizeof(INPUT)); 

input.ki.dwFlags = KEYEVENTF_KEYUP; 
SendInput(1, &input, sizeof(INPUT)); 

List of virtual key codes .....

+2

Use 'VkKeyScanEx (char, KeyboardLayout)' 'para poner su chars' "común" en este ejemplo :) ... 'input.ki.wVk = VkKeyScanEx ('a', kbl);' en cuanto a KeyboardLayout, la forma más sencilla es cargar el teclado de la ventana actual Layout: 'HKL kbl = GetKeyboardLayout (0);' –

+0

Gracias y @ jave.web por la respuesta. Inventé mi código para ingresar el carácter en la respuesta a continuación (lo siento, no puedo encontrar cómo insertar código en la sección de comentarios). –

0

me hizo una modificación después de leer el código de Nathan @ , this reference y combinado con la sugerencia de @ jave.web. Este código se puede usar para ingresar caracteres (mayúsculas y minúsculas).

#define WINVER 0x0500 
#include<windows.h> 
void pressKeyB(char mK) 
{ 
    HKL kbl = GetKeyboardLayout(0); 
    INPUT ip; 
    ip.type = INPUT_KEYBOARD; 
    ip.ki.time = 0; 
    ip.ki.dwFlags = KEYEVENTF_UNICODE; 
    if ((int)mK<65 && (int)mK>90) //for lowercase 
    { 
     ip.ki.wScan = 0; 
     ip.ki.wVk = VkKeyScanEx(mK, kbl); 
    } 
    else //for uppercase 
    { 
     ip.ki.wScan = mK; 
     ip.ki.wVk = 0; 

    } 
    ip.ki.dwExtraInfo = 0; 
    SendInput(1, &ip, sizeof(INPUT)); 
} 

A continuación se muestra la función de pulsar la tecla de retorno:

void pressEnter() 
{ 
    INPUT ip; 
    ip.type = INPUT_KEYBOARD; 
    ip.ki.time = 0; 
    ip.ki.dwFlags = KEYEVENTF_UNICODE; 
    ip.ki.wScan = VK_RETURN; //VK_RETURN is the code of Return key 
    ip.ki.wVk = 0; 

    ip.ki.dwExtraInfo = 0; 
    SendInput(1, &ip, sizeof(INPUT)); 

}