【问题标题】:How can one control third party app which has no API? [closed]如何控制没有 API 的第三方应用程序? [关闭]
【发布时间】:2011-07-30 09:25:34
【问题描述】:

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

我需要做什么:

  • 启动应用程序(这工作)
  • 在适当的编辑中输入字符串 字段
  • 按下按钮
  • 额外的好处是隐藏应用程序窗口

这可以做到吗?如何做到?

非常感谢。


编辑: 您如何看待 AutoIt 工具?

【问题讨论】:

    标签: c# automation ui-automation


    【解决方案1】:

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

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

    (注意:这是基于我之前的使用情况,所以现在可能略有不同)

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

    【讨论】:

      【解决方案2】:

      还有 UI 自动化 API,对于这项任务,它很容易启动。 此链接将使您了解对每种控件类型的支持:UI Automation Control Types。 您可以使用控件名称、标题或资源 ID 来获取它的句柄,然后做您想做的事情。 点击按钮就像抓住手柄一样简单:

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

      我在所有 .net 窗口上都取得了很好的成功,99% 的控件来自原生世界

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-18
        相关资源
        最近更新 更多