C++ 从字符转换不正确
我写了一个简单的程序,模拟点击特定的按钮。我努力将“a”转换为0x41C++ 从字符转换不正确,c++,winapi,C++,Winapi,我写了一个简单的程序,模拟点击特定的按钮。我努力将“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_
#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;
}
但是
请试一试
ip.ki.wVk=int'A'
虚拟键代码表示大写字母的ASCII值。因此,“a”变成了错误的键值
提到的虚拟密钥列表
“a'=97=0x61是“数字键盘1键”的虚拟键代码 如果只使用ip.ki.wVk='a'?'a'是0x61,061是'1',或者是一个奇怪的巧合,或者是一个键入错误,其中虚拟密钥代码与ascii字符不同。你所说的给予1是什么意思?你的意思是它给了第一名?还是数字1?或者其他什么?与您的问题无关,但定义WINVER 0x0500应该在包含Yeah之前!成功了!因为'A'=41=0x41是按钮的虚拟键代码。
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";