Отправка ввода с клавиатуры через DeviceIoControl

Последние 3 часа или около того я пытался отправить ввод с клавиатуры посредством записи на устройство клавиатуры. Я успешно нашел и открыл клавиатуру устройства, но застрял на последнем этапе. Я не знаю точно, как отформатировать параметры DeviceIoControl, и я не знаю, с чего начать получать значения.

В настоящее время у меня есть следующее, частично взятое из библиотеки под названием «Перехват». Я оставил все устройства для открытия устройства, чтобы сэкономить место.

#define IOCTL_WRITE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x820, METHOD_BUFFERED, FILE_ANY_ACCESS)

if(device != INVALID_HANDLE_VALUE) {
DWORD dwReturned;
KEYBOARD_INPUT_DATA kbinput;
kbinput.UnitId = 0;
kbinput.MakeCode = 0x2D;
kbinput.Flags = KEY_MAKE;
kbinput.Reserved = 0;
kbinput.ExtraInformation = 0;

DeviceIoControl(device, IOCTL_WRITE, &kbinput, sizeof(KEYBOARD_INPUT_DATA), NULL, 0, &dwReturned, NULL);
kbinput.Flags = KEY_BREAK;
DeviceIoControl(device, IOCTL_WRITE, &kbinput, sizeof(KEYBOARD_INPUT_DATA), NULL, 0, &dwReturned, NULL);
}

Если я вызываю GetLastError после вызова DeviceIoControl, я получаю возвращаемое значение ERROR_INVALID_FUNCTION (1). Я предполагаю, что это означает, что IOCTL_WRITE не является правильным значением, но я не имею ни малейшего представления о том, как найти правильное значение, и никакие поиски не продвинули меня дальше.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector