1
我有應用程序,將字符輸入發送到另一個應用程序。 一切都很好,但如果文本包含重複字符(例如「應用程序」),那麼只有一個字母'p'會到達目標窗口。SendInput隱藏重複的符號(似乎它不執行KEYUP事件)
發送「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);
}