У меня есть приложение, которое использовалось для отправки строки Unicode (не нажатия клавиш) благодаря API SendInput в Windows XP и Windows 7. Я попробовал его в Windows 10 и заметил, что если целевое приложение — UWP (например, Edge, OneNote и т. д.. .), строка Unicode не всегда правильно обрабатывается. Например, если приложение вызывает SendInput со строкой «привет», то приложение показывает «привет», «он» или даже ничего. Спасибо за советы
Вот код, основанный на интеграции Qt:
QString text;
...
int i = 0;
while (i < result.length())
{
...
// Check if some char needs to be filtered out or converted
...
INPUT Input;
Input.type = INPUT_KEYBOARD;
Input.ki.time = 0;
Input.ki.dwExtraInfo = 0;
Input.ki.wVk = 0;
Input.ki.wScan = text.mid(i, 1).utf16()[0];
Input.ki.dwFlags = KEYEVENTF_UNICODE;
SendInput(1, &Input, sizeof(INPUT));
Input.ki.dwFlags |= KEYEVENTF_KEYUP;
SendInput(1, &Input, sizeof(INPUT));
i++;
}
Строка Unicode отправляется символ за символом для фильтрации или преобразования любого символа, который не может быть отображен.