如何控制没有API的第三方应用?

时间:2011-04-05 22:53:51

标签: c# automation ui-automation

我需要控制一些没有API且命令行参数非常有限的第三方应用程序。 所以我需要使用.net和C#来模拟用户交互。

我需要做什么:

  • 启动应用程序(可行)
  • 在适当的编辑中输入字符串 字段
  • 按下按钮
  • 额外奖励是隐藏应用窗口

可以这样做吗?

非常感谢。


修改 您如何看待AutoIt工具?

2 个答案:

答案 0 :(得分:7)

您可以使用White实现此目的。

它使您能够以编程方式模拟与Win32,WinForms,WPF,Silverlight和SWT应用程序的用户交互。几年前,我第一次尝试在WinForms应用程序上自动执行一些简单的冒烟测试时取得了巨大的成功。

(警告:这是基于我之前的用法,所以现在可能会略有不同)

我创建了一些代码来启动我的应用程序并按名称查找一系列控件。一旦找到,就可以操纵每个控件(例如输入文本,点击按钮等等)。要查找控件的名称,请使用Spy ++(Win32),UISpy(WinForms)或Snoop(WPF)等内容来检查正在运行的应用程序。

答案 1 :(得分:2)

Theres也是UI Automation API,对于这项任务,它很容易wh起来。 此链接将让您了解对每种控件类型的支持:UI Automation Control Types。 您可以使用控件名称,标题或资源ID来获取其句柄,并执行您想要的操作。 单击按钮可以像抓住手柄一样简单:

AutomationElement control = AutomationElement.FromHandle(controlHandle);
InvokePattern ip = (InvokePattern)control.GetCurrentPattern(InvokePattern.Pattern);
ip.Invoke();

我在所有.net窗口上取得了非常好的成功,99%来自本土的控件