我必須輸入一些數據到一個真正的舊dos應用程序,並希望自動執行此操作。首先我嘗試SendKeys,失敗後,我嘗試了InputSimulator(inputsimulator.codeplex.com)失敗。它可以在任何其他應用程序(甚至CMD ...),但不是我想要的應用程序...模擬dos應用程序的輸入
示例代碼,我用:
InputSimulator.SimulateTextEntry("test");
InputSimulator.SimulateKeyDown(VirtualKeyCode.F1);
InputSimulator.SimulateKeyUp(VirtualKeyCode.F1);
我也SimulateKeyPress,相同的結果試了一下: ( 有人可以請給我一些提示
目標系統:Win XP的
屏幕的應用程序: http://images.devs-on.net/Image/wxhZouyZdwemgTRp-Bereich.png
EDIT1:是否可以從我的應用程序啓動.bat,並輸入stdin?
EDIT2:正如Boluc Papuccuoglu指出stdin方法不起作用。那麼無論如何要編寫一個工作按鍵模擬函數?
編輯3:與keybd_event我把它寫到應用程序。但...我試過
public const int A = 0x41;
public const int C = 0x43;
keybd_event(A, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(A, 0, KEYEVENTF_KEYUP, 0);
System.Threading.Thread.Sleep(1000);
keybd_event(C, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(C, 0, KEYEVENTF_KEYUP, 0);
但我只得到2倍「a」。編輯4:無論我給keybd_event哪個虛擬鍵,他總是寫「a」而沒有其他的東西。似乎我不得不這樣做老式aka手動方式。編輯5:所以是的,手動輸入被吸了,所以我決定給autoit一個嘗試,它的工作原理。 WTF?也許有人可以解釋我自動將密鑰發送到程序的方式與sendkeys,inputsimulator和keybd_event不同。
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –