我有将字符输入发送到另一个应用程序的应用程序。一切正常,但如果文本包含重复字符(例如“app”),那么只有一个字母“p”会到达目标窗口。
发送“app”时,我收到“ap”。在网上搜索后,我发现这是因为缺少 KEYUP 事件。但我在下面的代码中肯定有一个。怎么了?
void SendText(string text)
{
int len = text.Length;
int inputsSize = len * 2;
INPUT[] inputs = new INPUT[inputsSize];
for (int i = 0; i < len; i++)
{
INPUT inp = new INPUT();
inp.type = 1; //INPUT_KEYBOARD;
inp.U.ki.dwFlags = KEYEVENTF.UNICODE;
inp.U.ki.time = 0;
inp.U.ki.wVk = 0;
inp.U.ki.wScan = (short)text[i];
inp.U.ki.dwExtraInfo = GetMessageExtraInfo();
inputs[i] = inp;
INPUT inpUp = inp;
inpUp.U.ki.dwFlags = KEYEVENTF.UNICODE | KEYEVENTF.KEYUP;
inputs[i + 1] = inpUp;
}
SendInput((uint)inputsSize, inputs, INPUT.Size);
}