【问题标题】:emulate input for dos application模拟dos应用程序的输入
【发布时间】: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 有何不同。

【问题讨论】:

标签: c# batch-file


【解决方案1】:

不幸的是,标准输入方法可能不起作用。从我在屏幕截图中可以看到,应用程序最有可能作用于按键,而不是输入流的内容。

【讨论】:

  • 如果使用外部工具没问题,AutoIT 或 AutoHotKey 可以模拟键盘输入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
相关资源
最近更新 更多