C ++ Как имитировать специальные нажатия клавиш (alt + цифра) - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю над проектом, в котором мне нужно отправить определенный текст на определенную веб-страницу (в Chrome), но я не могу отправить его напрямую или скопировать и вставить.Решение, которое я придумал, это клавиатурный бот - я использую виртуальные клавиши для выполнения работы, но в этом тексте у меня есть специальный знак «↔» (Alt + цифра2 + цифра9), и я не могу сделать это с помощью виртуальных клавиш.Я буду благодарен за любое рабочее решение.Я пробовал разные методы, которые нашел, но ничего не получалось, если я имитирую только нажатие Alt и вручную набираю на числовой клавиатуре, это работает, но не тогда, когда это делает программа.Вот мой код:

#define WINVER 0x0500
#include <windows.h>
int main()
 { 
    INPUT typ;
    typ.type = INPUT_KEYBOARD;
    typ.ki.wScan = 0;
    typ.ki.time = 0;
    typ.ki.dwExtraInfo = 0;

        //Time to select window  
        Sleep(5000);
        // Press the "X" key
        typ.ki.wVk = 'X';
        typ.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &typ, sizeof(INPUT));

        // Release the "X" key
        typ.ki.wVk = 'X';
        typ.ki.dwFlags = KEYEVENTF_KEYUP;
        SendInput(1, &typ, sizeof(INPUT));

        // Press the "Alt" key
        typ.ki.wVk = VK_MENU;
        typ.ki.dwFlags = KEYEVENTF_EXTENDEDKEY|0; 
        SendInput(1, &typ, sizeof(INPUT));
        //Sleep(3000);
        // Press the "2" key
        typ.ki.wVk = VK_NUMPAD2;
        typ.ki.dwFlags = KEYEVENTF_EXTENDEDKEY|0; 
        SendInput(1, &typ, sizeof(INPUT));

        // Release the "2" key
        typ.ki.wVk = VK_NUMPAD2;
        typ.ki.dwFlags = KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP;
        SendInput(1, &typ, sizeof(INPUT));

        // Release the "Alt" key      
        typ.ki.wVk = VK_MENU;
        typ.ki.dwFlags = KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP;
        SendInput(1, &typ, sizeof(INPUT));

    return 0;
}

1 Ответ

0 голосов
/ 23 сентября 2019

Если кому-то нужна клавиша Unicode, нажмите

// Press a unicode "key"
typ.ki.dwFlags = KEYEVENTF_UNICODE;
typ.ki.wVk = 0;
typ.ki.wScan = 0x2194; // HEX UNICODE 
SendInput(1, &typ, sizeof(INPUT));

// Release key
typ.ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
SendInput(1, &typ, sizeof(INPUT));
...