У меня есть приложение, которое использовало для отправки строки 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 отправляется char символом для фильтрации или преобразования любого символа, который не может быть отображен.