使用C/C++自动化Internet Explorer

3
我想编写一个小工具,可以使用C ++(无MFC)自动化Internet Explorer。我想自动执行的一些操作是: 1. 打开网址 2. 在浏览器实例中单击超链接 3. 设置文本框的值 4. 检查复选框,下拉菜单等。
我是绝对的初学者,没有COM经验,但我目前正在学习过程中。有人可以指导我,比如提供资源和简要概述我需要做什么来自动化。我会非常感激。
谢谢, Ashish。

2
如果你正在学习创建C# WinForm应用程序,只需放置一个WebBrowser控件,就可以轻松完成! - Jeremy Thompson
感谢@JeremyThompson,但我不能使用C#,我想使用C++并学习一些关于COM的知识,我已经订购了《深入理解COM》,正在等待发货。目前来看,COM还是很困惑的。 - Ashish Kumar Shah
组件对象模型(COM)现在已经过时了。随着WinRT和下一个Visual Studio“vNext”,MetroApps等即将推出,我建议您选择更为现代化的技术。另一个建议是使用单元测试录制器-例如Selenium适用于FireFox-但是针对IE的版本,祝好! - Jeremy Thompson
@JeremyThompson COM不会消失。它是Windows和许多其他Microsoft技术的重要组成部分。 - ta.speot.is
我还建议阅读唐·博克斯(Don Box)的《Essential COM》一书。它向您展示了为什么需要COM,通过描述C++二进制模型存在的问题以及如何在各种C++编译器之间实现不可移植性。 - Sabuncu
2个回答

3
我强烈推荐使用Microsoft Visual C++编译器COM支持。通常情况下,它的工作原理如下:
#import "c:\path\to\typelib.tlb"

#import "c:\path\to\library.dll"

#import "c:\path\to\program.exe"

这使得从C++使用Internet Explorer或任何其他COM对象变得非常容易。
有关文档,请参见此处:

嗨@Ben,我遇到了IWebBrowser2接口,我可以使用它来打开IE窗口,但是如何执行像单击超链接和填充文本框之类的操作呢?有什么想法吗? - Ashish Kumar Shah
1
从IWebBrowser2对象中,您需要使用“get_Document”方法获取Document对象。然后,您可以通过与在浏览器中运行的JavaScript使用相同的DOM API来控制该文档。 - Ben
你能给我指一下使用DOM API控制文档的资源或示例吗?谢谢。 - Ashish Kumar Shah
谢谢。当我在淋浴时,它神奇地变得清晰了,哈哈,我的灵光一现。我现在能够点击超链接了。谢谢。一旦代码完善,我会尝试发布它。 - Ashish Kumar Shah
@AshishKumarShah,你有没有成功地尝试过操作表单? - mirza
显示剩余2条评论

1

Jeremy Thompson建议基本的答案:使用WebBrowser控件。在C#中,这要容易得多,因为它包括您需要的相当多的样板代码。即使MFC也包含其中一些内容。如果没有那个,您将需要实现适当的ActiveX容器。对于完全不懂COM的人来说,这非常复杂。ActiveX是高级COM技术。这里有一些示例代码 here

一旦您托管了它,相比之下,事情变得相当简单。打开URL只需要一个调用:IWebBrowser2::Navigate(URL,flags...)


我能够进行导航,但需要帮助执行其他操作,如单击链接和填写文本框等。 - Ashish Kumar Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接