我的目标是从VB.NET控制应用程序。没有API,我没有源,只有编译的EXE文件。有没有办法找到打开的应用程序,在应用程序中找到一个按钮,单击一个按钮,并知道它被单击?有没有办法在应用程序中读取文本框的内容?
答案 0 :(得分:5)
是的,对于Windows Vista(或Windows 7,或Windows Server 2003及更高版本),有“UI Automation”API。
有托管选项; System.Windows.Automation是.NET 3.0附带的WPF,是UI Automation blog的一部分...虽然System.Windows.Automation
是作为WPF的一部分提供的,但并不要求目标应用程序使用WPF。
您可以阅读更多内容:
System.Management.Automation.dll
(System.Windows.Automation
的替代方案)一起使用。System.Windows.Automation
自动执行CodeProject article #1程序(C#)。System.Windows.Automation
答案 1 :(得分:1)
是的,你可以,但首先可能更容易使用'AutoIt'作为原型脚本来查找应用程序。查找该应用程序窗口的句柄,通过该窗口的子控件进行枚举,专门查找该文本框和按钮...一旦AutoIt原型工作,然后深入实际编码,就可以使用{{ 3}}枚举并找到窗口,获取它的句柄并对其进行自动化......
从Stack Overflow发布 P/Invoke 中查看C#中的示例。 OP试图访问第三方窗口应用程序,提取文本并在其程序中使用该文本...注意在给定链接中,“FindWindow”用于迭代主进程窗口的子窗口。
答案 2 :(得分:0)
是的,但您必须使用原生API调用,例如EnumWindows
和EnumChildWindows
。看看 How To Enumerate Windows Using the Win32 API 。它适用于Visual Basic 6.0,但概念是相同的。