盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

开发嵌入式IE浏览器监控程序

时间:2024/12/4作者:未知来源:盾怪网教程人气:

[摘要]Other,切换到ActiveX页面,选择COM Object,点击OK按钮,即出现如图2所示的COM Object Wizard界面,去掉Included Type Library复选框,在Cla...
Other,切换到ActiveX页面,选择COM Object,点击OK按钮,即出现如图2所示的COM Object Wizard界面,去掉Included Type Library复选框,在Class Name中输入COM对象的名称IEMonitor,然后点击OK按钮,即新建了一个名称为TIEMonitor的COM对象(该COM对象的CLSID由系统自动生成)(见图2)。

开发嵌入式IE浏览器监控程序


(3)将工程和单元文件依次保存为DIEMonitor.dpr和UIEMonitor.pas。切换到UIEMonitor.pas单元文件,编辑TIEMonitor的定义形式如下:

TIEMonitor = class(TComObject, IDispatch, IObjectWithSite)
public
  function GetTypeInfoCount(out Count:Integer):HResult;stdcall;
  function GetTypeInfo(Index,LocaleID:Integer;out TypeInfo):HResult;stdcall;
  function GetIDsOfNames(const IID:TGUID;Names:Pointer;
                         NameCount,LocaleID:Integer;DispIDs:Pointer):HResult;stdcall;
  function SetSite(const pUnkSite:IUnknown):HResult;stdcall;
  function GetSite(const riid:TIID;out site:IUnknown):HResult;stdcall;
  function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
  Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
private
  IEThis:IWebBrowser2;
  Cookie:Integer;
protected
end;

  注意在UIEMonitor.pas单元文件的Uses中需要手动加入对SHDOCVW, Dialogs, SysUtils, Forms的引用。
  其中主要是对IObjectWithSite接口的SetSite()方法和IDispatch接口的Invoke()方法的实现:首先通过SetSite()方法获得IE的WebBrowser接口,然后寻找连接点,并且通过调用Advise()方法建立COM自身与连接点的连接;当连接建立成功后,IE在事件引发后,会调用连接到自身的IDispatch接口对象的Invoke方法,不同的事件对应不同的DispID编码,因此可以通过在程序中判断DispID对不同的事件做出相应的处理。系统主要对BeforeNavigate2、DownLoadComplete和OnQuit三个事件进行处理,它们对应的DispID分别为250、104和253。在Invoke()方法中,根据DispID分别调用DoBeforeNavigate2()、DoDownLoadComplete()和DoOnQuit()函数实现相关处理和控制功能,具体实现详见程序源代码。

(4)编译工程,生成DIEMonitor.dll文件。


[page_break]

2.注册/卸载COM对象

  注册COM对象包括注册COM对象,以及将COM对象的有关信息写入到IE浏览器扩展功能指定的注册表位置,下面分别对其注册方法进行介绍。卸载方法分别和注册方法相对应。

(1)注册/卸载COM对象。一种方法是在Delphi开发环境下运行Run

关键词:开发嵌入式IE浏览器监控程序




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版