Имеет некоторые проблемы с имитацией нажатия знака равенства (=) и вопросительного знака (?). Я подумал, если нет код виртуальной клавиши для этих двух, я должен сочетать в себе ключевые прессы и релизы, как этот парень сделал с помощью Ctrl-V: http://batchloaf.wordpress.com/2012/10/18/simulating-a-ctrl-v-keystroke-in-win32-c-or-c-using-sendinput/C++ имитирует нажатие знака равенства (=) и вопросительного знака (?)
моего кода для «=» (SHIFT + «+»):
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.wVk = VK_LSHIFT;
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
// Press the "+" key
ip.ki.wVk = VK_OEM_PLUS;
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
// Release the "+" key
ip.ki.wVk = VK_OEM_PLUS;
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
// Release the "Shift" key
ip.ki.wVk = VK_LSHIFT;
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
он выводит знак «+». Мне нужно, чтобы он работал, желательно, любой ОС Windows, но по крайней мере Windows XP (не уверен, что это имеет значение).
спасибо.
Вы не должны вызывать 'SendInput()' 4 раза с помощью 'nInputs = 1'. Вы должны называть его 1 раз с помощью 'nInputs = 4' и присваивать ему массив из 4' INPUT' структур. –