Устранение неполадок C ++ при отправке клавиш - PullRequest
0 голосов
/ 05 марта 2011

Я использую 64-битную Windows 7 Ultimate. Эту функцию я наткнулся на онлайн и использовал раньше без проблем, но теперь у меня проблема. Независимо от того, какого персонажа я ему отправлю, он просто отправит прямую косую черту / . Вот функция:

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 Ответ

1 голос
/ 05 марта 2011

KEYBDINPUT.wVk - это код виртуальной клавиши, а не символ ascii.

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

...