удерживайте клавишу до события C ++ - PullRequest
0 голосов
/ 09 апреля 2020

Итак, я делаю программу на C ++, которая должна удерживать клавишу C, когда клавиша W не нажимается, и отпускать клавишу C, когда нажимается W. Мне были даны простые спецификации: не используйте функцию SendInput и не позволяйте программе спамить ввод кнопки, которую она должна удерживать. Алгоритм, который я реализовал до сих пор, работает на всех концах спецификаций, однако мне сказали, что функция будет удерживать клавишу нажатой до тех пор, пока не будет сказано иначе, - только нажатие клавиши c один раз в течение доли секунды. Функция, которую я использую для нажатия: keybd_event('C', 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0); Полная реализация, которую я сделал, выглядит следующим образом:

        if (!GetAsyncKeyState('W'))
            pressed = true;
        else
            pressed = false;

        if (GetAsyncKeyState(VK_ESCAPE)) {
            keybd_event('C', 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
            cout << "c released\n";
            cout << "\n\ninput password\n\n";
            getPass();
            cout << "\n\npassowrd accepted\n\n";
        }

        if (inner != pressed) {
            if (pressed) {
                keybd_event('C', 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0);
                cout << "c pressed\n";
                inner = pressed;
            }else {
                keybd_event('C', 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                cout << "c released\n";
                inner = pressed;
            }
        }

В заключение, кто-нибудь знает, как заставить функцию keybd_event удерживать клавишу, пока она не станет сказал, чтобы выпустить это как продемонстрировано? Или кто-нибудь знает не-SendInput функцию, которая может сделать это? Для этой программы я также использовал windows .h для тех, кто может не распознавать имеющиеся функции. Спасибо за ваше время. : -)

...