Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从字符转换不正确_C++_Winapi - Fatal编程技术网

C++ 从字符转换不正确

C++ 从字符转换不正确,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_

我写了一个简单的程序,模拟点击特定的按钮。我努力将“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;
}
但是

请试一试

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";