有没有办法从VB.NET控制第三方EXE文件?

我的目标是从VB.NET控制一个应用程序。 没有API,我没有源,只有编译的EXE文件。 有没有办法find打开的应用程序,在应用程序中find一个button,点击一个button,并知道它被点击? 有没有办法读取应用程序中的文本框的内容?

Solutions Collecting From Web of "有没有办法从VB.NET控制第三方EXE文件?"

是的,在Windows Vista(或Windows 7或Windows server 2003及更高版本)中,有“ UI自动化 ”API。

有管理选项; System.Windows.Automation是.NET 3.0附带的一部分,作为WPF的一部分…虽然System.Windows.Automation作为WPF的一部分提供,但它不要求目标应用程序使用WPF。

你可以阅读更多:

  • UI Automation博客 。
  • MSDN Magazine文章 – 谈论使用PowerShell和System.Management.Automation.dllSystem.Windows.Automation的替代方法)。
  • 博客文章由塞缪尔杰克 – 描述使用System.Windows.Automation来自动化Paint.NET程序(C#)。
  • CodeProject文章#1显示使用UI自动化测试安装程序
  • CodeProject文章#2提供了使用System.Windows.Automation的基本介绍

是的,你可以,但首先可以使用“ AutoIt ”作为原型脚本来找到应用程序。 找到该应用程序的窗口句柄,通过该窗口的子控件枚举,具体找出该文本框和按钮…一旦AutoIt原型工作,然后潜入真正的编码,它将有可能使用P /调用枚举并找到窗口,获取它的句柄,并执行它的自动化…

看看在堆栈溢出张贴C#中的示例调用SendMessage(P / Invoke)不断崩溃 。 OP正在尝试访问第三方窗口应用程序,提取文本并在程序中使用该文本…请注意,在给定链接中,如何使用“FindWindow”遍历主进程窗口的子窗口。

是的,但是您将不得不求助于使用本地API调用,例如EnumWindowsEnumChildWindows 。 看看如何使用Win32 API枚举Windows 。 它适用于Visual Basic 6.0,但概念是相同的。