Возникли проблемы с симуляцией нажатия знака равенства (=) и знака вопроса (?).
Я подумал, что если для этих двух кодов нет виртуальной клавиши, я должен комбинировать нажатия и отпускание клавиш, как этот парень сделал с помощью Ctrl-V:
http://batchloaf.wordpress.com/2012/10/18/simulating-a-ctrl-v-keystroke-in-win32-c-or-c-using-sendinput/
мой код для «=» (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 (не уверен, что это имеет значение).
Спасибо.
=
символ является заглавным =
/+
ключ, в то время как +
это заглавная буква. Таким образом, чтобы вывести знак равенства, просто используйте (плохо названный) VK_OEM_PLUS
код виртуального ключа.
Других решений пока нет …