【发布时间】:2013-12-18 00:06:22
【问题描述】:
我必须将一些数据输入到一个非常旧的 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:是否可以从我的应用程序启动 .bat 并输入标准输入?
EDIT2:正如 Boluc Papuccuoglu 指出的那样,标准输入方法不起作用。那么有没有办法编写一个有效的击键模拟功能?
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”。
EDIT4:不管我给keybd_event哪个虚拟键,他总是写“a”而不是别的。看来我必须用老式的又名手动方式来做。
EDIT5:是的,手动输入很糟糕,所以我决定尝试一下 autoit,它可以工作。怎么回事?也许有人可以解释一下 autoits 向程序发送密钥的方式与 sendkeys、inputsimulator 和 keybd_event 有何不同。
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# batch-file