我写了一个简单的程序,模拟点击特定按钮。我努力转变' a'到0x41。
#include <iostream>
#include <Windows.h>
#define WINVER 0x0500
int main() {
INPUT ip;
// Pause for 5 seconds.
Sleep(5000);
// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
// Press the "A" key
ip.ki.wVk = 0x41; // virtual-key code for the "a" key
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
// Release the "A" key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));
return 0;
}
编译并执行以下代码后点击&#34; a&#34;哪个是对的。但是当我将 ip.ki.wVk 中的值更改为ex时。 (INT)&#39;一个&#39;它的行为不同。
ip.ki.wVk = 0x41; //gives me "a" which is correct
ip.ki.wVk = 65 //the same as above which is good;
但
ip.ki.wVk = int('a')//gives "1";
答案 0 :(得分:4)
请尝试
ip.ki.wVk = int('A')
虚拟键代码表示UPPERCASE值中字母的ASCII值。因此&#39; a&#39;正在变成错误的关键价值。
提到的虚拟密钥列表here
&#39;一个&#39; = 97 = 0x61是&#39;数字小键盘1键的虚拟键代码。