Re[2]: Input from keyboard using Native NT API - solved!
От: kpoxman  
Дата: 10.05.06 21:01
Оценка: 6 (1)
MSura, спасибо большое! Вы мне очень помогли!
Кстати, я послал вопрос на несколько форумов, и только здесь мне ответили по существу
Вот кусок кода, который получает один char, может кому пригодится:

USHORT ProcessInput() {
UNICODE_STRING KeyboardName = RTL_CONSTANT_STRING(L"\\Device\\KeyboardClass0");
OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK IoStatusBlock;
NTSTATUS Status;
USHORT Res;

InitializeObjectAttributes(&ObjectAttributes, &KeyboardName, OBJ_CASE_INSENSITIVE, NULL, NULL);
Status = NtCreateFile(&StdInput, GENERIC_READ | SYNCHRONIZE | FILE_READ_ATTRIBUTES,
&ObjectAttributes, &IoStatusBlock, 0, FILE_ATTRIBUTE_NORMAL, 0,
FILE_OPEN, FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT, 0, 0);
{
KEYBOARD_INPUT_DATA InputData;
Status = NtReadFile(StdInput, NULL, NULL, NULL, &IoStatusBlock, &InputData, sizeof(KEYBOARD_INPUT_DATA), NULL, 0);
Res = InputData.MakeCode;
}

NtClose(StdInput);

return Res;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.