2010-03-05 54 views
2

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

+0

你将会很难完成所有这些工作,但我相信它可以完成。 – 2010-03-05 02:00:56

回答

4

是的,对于Windows   Vista(或Windows   7或Windows Server 2003及更高版本),有“UI Automation”API。

有托管选项; System.Windows.Automation是.NET 3.0中的一部分,作为WPF的一部分...尽管System.Windows.Automation作为WPF的一部分发布,但它并不要求目标应用程序使用WPF。

你可以阅读更多:

0

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

+0

有一些用于UI自动化API的托管代码包装器。 – Cheeso 2010-03-05 02:03:28

+0

据我所知,它需要WPF。可能是错误的。 – 2010-03-05 02:04:47

+0

有趣...我一直在寻找这个一段时间,我从来没有遇到过这个。你知道VB.Net中的任何样本吗? – ajl 2010-03-05 02:06:36

1

是的,你可以,但首先它可能会更易于使用“AutoIt”为原型设计的脚本首先

  • CodeProject article #1节目找到应用程序。找到该应用程序窗口的句柄,通过该窗口的子控件枚举,具体查找该文本框以及该按钮......一旦AutoIt原型工作,然后深入实际编码,并有可能使用P/Invoke' s到枚举并找到窗口,得到它的手柄,就可以进行自动化...

    看一看从堆栈溢出发布Calling SendMessage (P/Invoke) keeps crashing在C#中的样本。 OP正在尝试访问第三方窗口应用程序,提取文本并在其程序中使用该文本......请注意,在给定链接中,如何使用“FindWindow”遍历主进程窗口的子窗口。

  • 相关问题