与Unicode字符串SendInput无法正常送入UWP应用程序在Windows 10

问题描述 投票:0回答:1

我有一个用于发送Unicode字符串(不击键)由于在Windows XP和Windows 7的SendInput API我试了一下在Windows 10,注意到一个应用程序,如果目标应用程序是UWP(如边缘时,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字符串由字符发送字符过滤或转换,不能显示任何字符。

windows uwp windows-10 sendinput
1个回答
0
投票

UWP Windows是不是“正常”的人,他们是直接建立在COM之上,因此如预期一样sendinput USER32功能将无法正常工作。

如果你想支持某种形式的跨应用程序通信,请查看AppServices和以及由斯特凡·威克over at his blog提供的样品。

© www.soinside.com 2019 - 2024. All rights reserved.