4

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

  • 更改选项卡
  • 从 TextBox 中复制文本
  • 点击按钮
  • 在 TextBox 中输入文本
  • 选择 DropDownList 元素

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

  • mouse_event() 更改鼠标坐标并单击按钮
  • 另一个 mouse_event(LeftMouseClick 后跟 RightMouseClick)复制文本框中的文本
  • Clipboard.GetText(System.Windows.Forms.TextDataFormat.Text) 复制剪贴板中的内容
  • SendInput(对于每个键) - 将文本输入到 TextBox

这种方法的缺点是:

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

我期待创建一个可以单击文本框/按钮/列表而不需要这些元素的精确坐标的应用程序。

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

4

3 回答 3

0

阅读有关Mutex的信息。如果您计划扩展能力,请阅读网络通信(例如,TCP 协议。TcpListnerTcpClient)。

于 2012-05-26T16:51:48.757 回答
0

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

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

于 2012-05-26T16:52:06.710 回答
0

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

您可以使用您使用模式或导航控件树找到的AutomationElement获取文本并与控件交互。

于 2012-05-26T16:53:11.453 回答