模拟dos应用程序的输入



我必须将一些数据输入到一个非常旧的dos应用程序中,并希望将其自动化。首先我尝试了SendKeys,但失败了,然后我尝试了InputSimulator(InputSimulator.codeplex.com),但也失败了。它适用于任何其他应用程序(甚至cmd…),但不适用于我想要的应用程序…

我使用的示例代码:

InputSimulator.SimulateTextEntry("test");
InputSimulator.SimulateKeyDown(VirtualKeyCode.F1);
InputSimulator.SimulateKeyUp(VirtualKeyCode.F1);

我还用SimulateKeyPress进行了尝试,结果相同:(有人能给我一些提示吗?

目标系统:Win XP

应用程序屏幕:http://images.devs-on.net/Image/wxhZouyZdwemgTRp-Bereich.png

EDIT1:是否可以从我的应用程序和stdin输入中启动.bat?

第二版:正如Boluc Papuccuoglu所指出的,stdin方法是行不通的。那么,是否有编写一个工作按键模拟函数的代码呢?

EDIT3:使用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",其他什么都不写。我似乎不得不用老式的,也就是手动的方式来做。

编辑5:所以是的,手动输入很糟糕,所以我决定尝试一下autoit,它成功了。WTF?也许有人可以向我解释一下,autoits向程序发送密钥的方式与sendkeys、inputsimulator和keybd_event有何不同。

不幸的是,stdin方法可能无法工作。从屏幕截图中可以看到,应用程序很可能是根据按键操作的,而不是输入流的内容。

最新更新