私はいくつかのキーストロークを自動化するためにSendInputを使用しようとしています。簡単なテスト(メモ帳を開いてストロークが起こるのを見る)では、ストロークはうまく動作します。しかし、この入力を特定のアプリケーションに送信しようとすると、SendInputは特定のキーの最初のインスタンスに対してのみ機能します。だから、私はSpaceを一度送ることができます。次にSpaceを送信しようとすると、実際には送信されません。 (他のアプリケーションで送信されても)それから私はAを一度送信することができますが、次回はAを送信しようとすると送信しません。等々。キーの各インスタンスの後にSendInputが機能しなくなる原因は何ですか?
私は何かを実行している権限の問題ですか?最初の入力はうまく動作しますが、同じキーを押した後は入力しません。
public static void PressEnter()
{
INPUT[] Inputs = new INPUT[1];
INPUT Input = new INPUT();
Input.type = 1; // 1 = Keyboard Input
Input.U.ki.wScan = ScanCodeShort.RETURN;
Input.U.ki.dwFlags = KEYEVENTF.SCANCODE;
Inputs[0] = Input;
uint returnInput = SendInput(1, Inputs, INPUT.Size);
Console.WriteLine(returnInput);
}
は、私が注目し、メモ帳で何度もこれを繰り返すことができ、そしてリターンが連続して行われます。
は、もう少し物質を提供するために、ここではすべての標準の構造体を想定し、例示的な方法です。しかし、これをこの特定のアプリケーションに何度も送信すると、最初のものだけが通過します。しかし、私はキーボードのEnterキーを押すことができます。アプリケーションがSendInputからの入力を拒否することは可能ですか?
どのアプリケーションにキーストロークを送信しようとしていますか? – spender
このアプリケーションは、私が自動化に取り組んでいるソフトウェアを保持している複雑なレコードです(以前はSendInputと一緒に作業していたため、この。 – Branden
あなたはSpace、A、Then Spaceを送ったときに何が起こるのですか? –