【发布时间】:2011-07-30 09:25:34
【问题描述】:
我需要控制一些没有 API 且命令行参数非常有限的第三方应用程序。 所以我需要使用 .net 和 C# 模拟用户交互。
我需要做什么:
- 启动应用程序(这工作)
- 在适当的编辑中输入字符串 字段
- 按下按钮
- 额外的好处是隐藏应用程序窗口
这可以做到吗?如何做到?
非常感谢。
编辑: 您如何看待 AutoIt 工具?
【问题讨论】:
标签: c# automation ui-automation
我需要控制一些没有 API 且命令行参数非常有限的第三方应用程序。 所以我需要使用 .net 和 C# 模拟用户交互。
我需要做什么:
这可以做到吗?如何做到?
非常感谢。
编辑: 您如何看待 AutoIt 工具?
【问题讨论】:
标签: c# automation ui-automation
您可以使用White 实现此目的。
它使您能够以编程方式模拟用户与 Win32、WinForms、WPF、Silverlight 和 SWT 应用程序的交互。几年前,当它首次可以在 WinForms 应用程序上自动执行一些简单的冒烟测试时,我使用它并取得了巨大成功。
(注意:这是基于我之前的使用情况,所以现在可能略有不同)
我创建了一些代码来启动我的应用程序并按名称查找一系列控件。一旦找到,就可以对每个控件进行操作(例如,输入文本、单击按钮等)。要查找控件的名称,请使用 Spy++ (Win32)、UISpy (WinForms) 或 Snoop (WPF) 之类的名称来检查正在运行的应用程序。
【讨论】:
还有 UI 自动化 API,对于这项任务,它很容易启动。 此链接将使您了解对每种控件类型的支持:UI Automation Control Types。 您可以使用控件名称、标题或资源 ID 来获取它的句柄,然后做您想做的事情。 点击按钮就像抓住手柄一样简单:
AutomationElement control = AutomationElement.FromHandle(controlHandle);
InvokePattern ip = (InvokePattern)control.GetCurrentPattern(InvokePattern.Pattern);
ip.Invoke();
我在所有 .net 窗口上都取得了很好的成功,99% 的控件来自原生世界
【讨论】: