使用 C# WinForms 应用访问另一个应用的元素

本文关键字:应用 元素 另一个 访问 WinForms 使用 | 更新日期: 2023-09-27 18:35:29

我希望能够在另一个应用程序中执行以下操作:

  • 以更改选项卡
  • 以从文本框中复制文本
  • 以单击按钮
  • 在文本框中输入文本
  • 以选择下拉列表元素

现在我正在使用单独的方法,例如:

  • mouse_event() 更改鼠标坐标并单击按钮
  • 另一个mouse_event(左鼠标单击,然后右键单击)复制文本框中的文本
  • Clipboard.GetText(System.Windows.Forms.TextDataFormat.Text) 以复制剪贴板内的内容
  • 发送输入(对于每个键)- 在文本框中输入文本

这种方法的缺点是:

  • (不重要)PC 变得不可用(脚本运行时您无法工作)
  • 我必须知道应用程序中每个元素的确切像素(读取 - 位置/坐标)
  • 执行时间慢(每个键必须单独键入)

我期待着创建一个可以单击文本框/按钮/列表的应用程序,而无需具有这些元素的确切坐标

C# WinForms 是否可以完成这样的任务?我目前的方法有效,但它有缺陷。有什么建议吗?

使用 C# WinForms 应用访问另一个应用的元素

阅读有关互斥体的信息。如果计划可缩放性,请阅读网络通信(例如,TCP 协议)。TcpListner和TcpClient)。

这听起来像是UI自动化的工作。 我只使用它从另一个应用程序获取文本,但它具有按名称激活控件或在没有名称的情况下导航控件树的功能。

您可以使用使用模式或导航控件树找到的自动化元素来获取文本并与控件交互。

有一个完整的框架来做这种事情,它被称为UI 自动化框架

下面是有关如何使用它的一些示例。
您还可以使用UI Spy将此技术应用于通用窗口,以确定自动化元素。