感谢Windows XP和Windows 7上的SendInput API,我有一个用于发送unicode字符串(而不是击键)的应用程序。我在Windows 10上进行了尝试,并注意到如果目标应用程序是UWP(例如Edge,OneNote,等等),Unicode字符串并非总是正确处理。例如,如果应用程序使用“ hello”字符串调用SendInput,则应用程序将显示“ hello”,“ he”,甚至什么都不显示。 感谢您的建议
以下是基于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发送给char,以过滤或转换任何无法显示的char。
答案 0 :(得分:0)
UWP Windows不是“普通”的Windows,它们直接建立在COM之上,因此 user32 之类的功能(如sendinput)将无法正常工作。
如果您想支持某种跨应用程序通信,请查看AppServices以及Stefan Wick over at his blog提供的示例。