我正在嘗試使用SendInput來自動化一些擊鍵。在簡單的測試中(即打開記事本和看筆畫發生),筆畫工作正常。模擬空間作品一遍又一遍,字母等什麼會導致SendInput在每個密鑰實例之後停止工作?
但是,當試圖將此輸入發送到某個應用程序時,SendInput僅適用於某個鍵的第一個實例。因此,我可以發送一次空間,並且下次嘗試發送空間時,它不會實際發送。 (即使它會在任何其他應用程序中發送)然後我可以發送一次A,但下次嘗試發送A時它不會發送。等等。
這是我遇到的某種權限問題或什麼的?初始輸入工作得很好,但按下相同的按鍵則不行。
爲了提供更多的物質,下面是一個例子方法,假設所有的標準結構:
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
當你發送空間,然後A,然後空間時會發生什麼?它會第二次發送空間 –