Единственный найденный фрагмент кода, который может указывать на вашу проблему, также устанавливает код сканирования в структуру ki
.
Попробуйте изменить разделы модификаторов на:
if (control) {
input[nInput].ki.wVk = VK_CONTROL;
input[nInput].ki.dwFlags = 0;
input[nInput].ki.wScan = MapVirtualKey(VK_CONTROL, 0);
nInput++;
}
if (alt) {
input[nInput].ki.wVk = VK_MENU;
input[nInput].ki.dwFlags = 0;
input[nInput].ki.wScan = MapVirtualKey(VK_MENU, 0);
nInput++;
}
if (shift) {
input[nInput].ki.wVk = VK_SHIFT;
input[nInput].ki.dwFlags = 0;
input[nInput].ki.wScan = MapVirtualKey(VK_SHIFT, 0);
nInput++;
}
и посмотрим, поможет ли это.
Если это по-прежнему не работает, попробуйте установить dwFlags
на KEYEVENTF_SCANCODE
вместо 0
(только для клавиш-модификаторов).
Также сделайте это для событий нажатия клавиш, и я предполагаю, что вы устанавливаете input[nInput].type
в INPUT_KEYBOARD
, да? Ваш код не указывает на это.
Для справки, он был найден на этой странице .