来自char

时间:2017-09-26 19:59:22

标签: 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_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";

1 个答案:

答案 0 :(得分:4)

请尝试

ip.ki.wVk = int('A')

虚拟键代码表示UPPERCASE值中字母的ASCII值。因此&#39; a&#39;正在变成错误的关键价值。

提到的虚拟密钥列表here

&#39;一个&#39; = 97 = 0x61是&#39;数字小键盘1键的虚拟键代码。