实现和IE浏览器交互的几种方法
浙江大学计算机系 (310027)
胡朝晖 陈奇 俞瑞钊
如何实现对IE浏览器中对象的操作是一个很有实际意义的问题,通过和IE绑定的DLL 我们可以记录IE浏览过的网页的顺序,分析用户的使用行为和模式。我们可以对网页的内容进行过滤和翻译,可以自动填写网页中经常需要用户填写的Form内容,等等。
----本文所有的例子代码都是通过VC来表示的,采用的原理是,通过和IE对象接口的交互来实现对IE的访问。实际上是采用COM的技术,COM 是和语言无关的一种二进制对象交互的模式,所以实际上下面所描述的内容都可以用其他的语言来实现,比如VB、Delphi、C++ Builder等等。
一 实现IE实例遍历
----首先我们来看系统是如何知道当前有多少个IE的实例在运行。
----在Windows体系结构下,一个应用程序可以通过操作系统的运行对象表来和这些应用的实例进行交互。但是IE当前的实现机制是不在运行对象表中进行注册,所以需要采用其他的方法。可以通过ShellWindows集合来代表属于shell 的当前打开的窗口的集合,而IE就是属于shell的一个应用程序。
----下面描述一下用VC实现对当前 IE实例进行遍历的方法。IShellWindows是关于系统shell的一个接口,可以定义一个如下的接口变量:
----SHDocVw::IShellWindowsPtr m_spSHWinds;
----然后创建变量的实例:
m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows));
----通过IShellWindows接口的方法GetCount可以得到当前实例的数目:
----long nCount = m_spSHWinds->GetCount();
----通过IShellWindows接口的方法Item可以得到每一个实例对象:
----IDispatchPtr spDisp;
----_variant_t va(i, VT_I4);
----spDisp = m_spSHWinds->Item(va);
----然后可以判断实例对象是不是属于IE浏览器对象,通过下面的语句实现:
----SHDocVw::IWebBro
实现和IE浏览器交互的几种方法
最新推荐文章于 2023-08-19 06:15:00 发布