Напечатать нажатую клавишу c ++ - PullRequest
0 голосов
/ 09 февраля 2019

Я хочу захватить и напечатать нажатую клавишу.Проблема в том, что моя программа показывает «а» как «А» и «1» как «а».И я не знаю, как это исправить.Буду благодарен за любую помощь.Не могу использовать что-то вроде scanf или getc, потому что это должен быть кейлоггер (consolefree) для моего школьного проекта.

Мой исходный код:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <Windows.h>

using namespace std;

int main(){
char c;

    while(true)
    {
        for (int i = 8; i <= 255; i++)
        {
            if (GetAsyncKeyState(i) == -32767) // I DONT UNDERSTAND THIS LINE
            {
                c = char(i);
                printf("%c", c);
            }
        }
    }

    return 0;
}

Заранее благодарен за любые подсказки или примеры.

1 Ответ

0 голосов
/ 09 февраля 2019

Если вы посмотрите на эту ссылку. В ней говорится:

Функция возвращает 0, если клавиша НЕ нажата, и значение <0 (меньше нуля), когдав настоящий момент нажата клавиша. </p>

Таким образом, вы проверяете наличие отрицательного значения, чтобы увидеть, нажата ли кнопка.Вы можете так же легко написать это как: if (GetAsyncKeyState(i) < 0) и заставить его работать, с преимуществом, которое будет более понятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...