C ++故障排除发送击键

时间:2011-03-05 06:22:00

标签: c++ keystrokes

我正在使用Windows 7旗舰版64位。这是我在网上偶然发现的功能,之前没有问题,但现在我遇到了问题。无论我发送给它的是什么字符,它都会发送正斜杠击键 / 。 这是功能:

void GenerateKey(int vk, BOOL bExtended)
{

    KEYBDINPUT  kb = {0};
    INPUT       Input = {0};

    /* Generate a "key down" */
    if (bExtended) { kb.dwFlags  = KEYEVENTF_EXTENDEDKEY; }
    kb.wVk  = vk;
    Input.type  = INPUT_KEYBOARD;
    Input.ki  = kb;
    SendInput(1, &Input, sizeof(Input));

    /* Generate a "key up" */
    ZeroMemory(&kb, sizeof(KEYBDINPUT));
    ZeroMemory(&Input, sizeof(INPUT));
    kb.dwFlags  =  KEYEVENTF_KEYUP;
    if (bExtended) { kb.dwFlags |= KEYEVENTF_EXTENDEDKEY; }
    kb.wVk = vk;
    Input.type = INPUT_KEYBOARD;
    Input.ki = kb;
    SendInput(1, &Input, sizeof(Input));

    return;
}

以下是我如何称呼它: GenerateKey('x',FALSE);

然而,我得到 / 而不是 x 。任何人都可以看到出了什么问题? 我正在使用Visual Studio 2008。

1 个答案:

答案 0 :(得分:1)

KEYBDINPUT.wVk是虚拟键码,而不是ascii char。

http://msdn.microsoft.com/en-us/library/ms646271(v=vs.85).aspx