C# 如何控制没有API的第三方应用程序?

C# 如何控制没有API的第三方应用程序?,c#,automation,ui-automation,C#,Automation,Ui Automation,我需要控制一些没有API和非常有限的命令行参数的第三方应用程序。 因此,我需要使用.net和C#模拟用户交互 我需要做的是: 启动应用程序(此功能正常) 在适当的编辑框中输入字符串 田地 按下按钮 额外的好处是隐藏应用程序窗口 这能做到吗?如何做到 多谢各位 编辑: 你觉得AutoIt工具怎么样 您可以通过使用来实现这一点 它使您能够以编程方式模拟用户与Win32、WinForms、WPF、Silverlight和SWT应用程序的交互。几年前,当它首次能够在WinForms应用程序上自动执

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

我需要做的是:

  • 启动应用程序(此功能正常)
  • 在适当的编辑框中输入字符串 田地
  • 按下按钮
  • 额外的好处是隐藏应用程序窗口
这能做到吗?如何做到

多谢各位


编辑:
你觉得AutoIt工具怎么样

您可以通过使用来实现这一点

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

(注意:这是基于我刚才的用法,所以现在可能略有不同)


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

还有UI自动化API,对于此任务来说,它非常容易启动。 此链接将让您了解对每种控件类型的支持:。 您可以使用控件名、标题或资源ID来获取其句柄,并执行所需操作。 单击按钮可以非常简单,只需抓住手柄并:

AutomationElement control = AutomationElement.FromHandle(controlHandle);
InvokePattern ip = (InvokePattern)control.GetCurrentPattern(InvokePattern.Pattern);
ip.Invoke();
我在所有.net窗口和99%的本地控件上都取得了很好的成功