Как захватить необработанный ввод с клавиатуры на Windows - PullRequest
0 голосов
/ 21 января 2020

У меня есть устройство, которое работает как HID (клавиатура). Мне удалось захватить и захватить необработанный ввод устройства на Linux. Мне нужно было получить эксклюзивные права на устройство, чтобы никакое другое приложение не могло получать от него информацию. Я сделал это, используя ioctl и EVIOCGRAB

Но он не компилируется в Windows. Я обнаружил, что есть функция RegisterRawInputDevices, но она не предоставляет эксклюзивных прав на устройство. Что можно использовать на Windows для достижения того же эффекта?

Вот мой код, который работает на Linux

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <dirent.h>
#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/select.h>
#include <sys/time.h>
#include <termios.h>
#include <signal.h>

int main(int argc, char* argv[])
{
    struct input_event ev[64];
    int fevdev = -1;
    int result = 0;
    int size = sizeof(struct input_event);
    int rd;
    int value;
    char name[256] = "Unknown";
    char *device = "/dev/input/event16";

    fevdev = open(device, O_RDONLY);
    ioctl(fevdev, EVIOCGRAB, 1);

    while (1)
    {
        read(fevdev, ev, size * 64);
        value = ev[0].value;
        printf ("code - %d \n", ev[1].code);
    }

    ioctl(fevdev, EVIOCGRAB, 0);
    close(fevdev);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...