• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
开发嵌入式IE浏览器监控程序
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
开发嵌入式IE浏览器监控程序
软件发布 开发嵌入式IE浏览器监控程序
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> Delphi教程 >> 开发嵌入式IE浏览器监控程序

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

添加时间: 2006-2-25 4:50:55  作者: Delphi教程  阅读次数:136   来源: http://www.d9soft.com

       

  随着网络的发展和普及,对网络的监控日益成为网络安全的必然要求,也是管理和维护网络的一个有效手段。当前已经有多种应用比较广泛的网络监控和过滤程序,如美萍网管、we-blocker等,它们都可以实现基于网络URL和IP地址的监控和过滤功能。

  本文将对如何开发一个嵌入到IE浏览器中的监控程序进行介绍,该程序可以根据网络URL和IP地址进行监控和过滤,并且记录系统日志,从而使你对IE(当然是使用它的用户)的所有操作一览无余。相信通过阅读本文,会加深你对网络监控程序的理解,以及提高你的COM编程能力和数据库编程能力。

  本文在Delphi 6开发环境下实现,数据库使用桌面数据库Access 2000。

基础知识

1.COM编程

  COM(Component Object Model,组建对象模型)是微软公司(Microsoft Company)提出的二进制通信规范,用于软件组件之间的跨越多个进程、机器、硬件和操作系统的互操作,它是一项通过接口(Interface)透明的传递封装数据的技术,并且独立于语言和操作平台。一个COM对象是实现一个或者若干个接口的对象,即COM对象借助接口输出它所提供的服务。

2.IE浏览器的体系结构

  IE浏览器的体系结构如图1所示。其中MSHTML是位于SHDOCVW和HTML页面之间的COM对象,SHDOCVW对象用于处理页面的显示,而MSHTML用于处理页面的语法分析,并且将页面中的标记转换为元素。MSHTML是一个COM服务器,允许COM客户端程序访问它对外提供的服务。

  实现IE浏览器嵌入式编程的基本方法是建立COM对象,从而以COM客户端程序的形式和MSHTML COM服务器建立连接,然后通过接口回调实现需要的控制功能。也即首先建立COM对象,实现系统规定的若干接口,然后注册COM对象,并且将COM对象的有关信息写入到IE浏览器扩展功能指定的注册表位置。

嵌入式IE浏览器监控程序的实现

  嵌入式IE浏览器监控程序的实现主要包括监控程序的实现和维护程序的实现两部分,根据程序开发过程,可以将其分为四个步骤,下面分别对各个实现步骤进行详细介绍。

1.实现COM对象

  开发COM对象的任务就是建立一个能够与IE浏览器的MSHTML COM服务器建立连接并且通过接口回调实现控制功能的COM对象,具体实现过程如下:

  (1)运行Delphi,依次点击FileNewOther,切换到ActiveX页面,选择ActiveX Library,点击OK按钮,即建立一个新的工程。

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

图2

  (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文件。

2.注册/卸载COM对象

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

  (1)注册/卸载COM对象。一种方法是在Delphi开发环境下运行RunRegister ActiveX Server/RunUnregister ActiveX Server自动完成COM对象的注册/卸载;另一种方法是通过调用MS Windows操作系统提供的regsvr32.exe命令进行注册。

  (2) 注册/卸载COM对象的有关信息到IE浏览器扩展功能指定的注册表位置。将COM对象的CLSID写入到IE浏览器扩展功能指定的注册表位置后,当IE浏览器启动时,就通过该CLSID查找COM对象有关信息(如文件路径),从而实现了COM对象嵌入式功能扩展。为了实现这个目的,只需要在注册表的[HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Explorer\Browser Helper Objects]项下,建立一个名称为COM对象的CLSID的注册表项目即可。

3.开发监控模块

  监控模块主要完成对IE浏览器的监控功能,在Invoke()函数中触发BeforeNavigator2事件时调用执行,主要包括ChkUrl()、WriteSite()、WriteLog()和GetIP()四个功能函数,分别完成检查URL(及IP地址)、记录URL和IP地址、记录系统日志、根据URL取得IP地址的功能,分别简单介绍如下,具体实现详见程序源代码。

  (1)ChkUrl()函数:它是监控模块的核心函数,也是模块的入口函数。ChkUrl()函数首先取得用户请求的URL,并且调用GetIP()函数取得其对应的IP地址,然后到系统中查找该URL及IP是否已经存在,如果存在则根据系统保存的结果禁止/允许用户访问,否则就根据系统的当前工作状态(禁止/允许)动态处理,同时调用WriteSite()函数将该URL和IP地址保存到系统中。最后调用WriteLog()函数记录系统日志。

  (2)WriteSite()函数:完成将URL和IP地址保存到系统中的功能,同时记录系统当前日期和时间。

  (3)WriteLog()函数:将有关信息形成系统日志并且保存下来,主要有网络URL和IP地址、用户名称、访问日期和时间、处理结果(禁止/允许访问)等信息。

  (4)GetIP()函数:提供根据URL取得对应IP地址的功能,通过调用TNMHTTP组件的相关功能实现:首先将URL赋值给TNMHTTP组件的Host属性,然后调用ResolveRemoteHost()方法,就可以从其RemoteIP属性中获得对应的IP地址。

4.开发维护程序

  维护程序主要实现系统参数维护和日志管理两方面功能,在启动时需要管理员登录。

  (1)系统参数维护:启用/停止系统监控功能等,程序界面如图3所示。

图3

  (2)系统日志管理:日志的查询、打印等功能(见图4)。

图4

总结和系统进一步完善计划

  本文详细介绍了嵌入式IE浏览器监控程序的开发方法和实现过程,该系统以COM对象的形式嵌入到IE浏览器中,可以实现对IE浏览器(即用户)的监控功能。

  为了方便广大读者使用这个实用程序,我们已经把源程序和可执行文件一起打包提供下载,点击这里下载源文件(142K, winzip压缩文件)。

 

上下文章:

 

上一篇文章: QQ窗体自动隐藏效果探究 下一篇文章: DIY个照相机-Delphi实现摄像头拍照功能

相关文章:

  • AV杀手变种强行关闭杀度软件与下载恶意程序
  • Oracle开发人员JAVA存储过程
  • 数据库监控工具ForOraclev1.2
  • Oracle平台应用数据库系统的设计与开发[上]
  • Oracle外部程序的触发小结

相关软件:

  • Sundy注册表监控 V2.86 绿色版
  • LSC企业监控软件 3.0
  • MyTouch易维触摸屏浏览器 5.8 绿色版
  • COCO电脑监控系统 2008 企业版
  • 网络端口监控(NetPortMonitor) 1.0
  • FTP远程文件同步更新程序 1.0.0.0

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • Delphi的两个实用技巧(1)播放Flash
  • Delphi的两个实用技巧(2)巧用Wind...
  • delphi实例编程之--制作可随处拖放...
  • 关于VisiBroker For Delphi的使用...
  • 关于VisiBroker For Delphi的使用...
  • 关于VisiBroker For Delphi的使用...
  • 在线播放器DIY
  • Delphi让你发送Flash电子邮件
  • 在窗口标题区添加按钮
  • 用Delphi 6编程实现自动标注汉语拼...

Delphi教程阅读排行

  • Delphi7从入门到精通之历数Delphi...
  • Delphi的两个实用技巧(1)播放Flash
  • Delphi7从入门到精通之认识Delphi...
  • delphi实例编程之--制作可随处拖放...
  • Delphi控件,我们也可以(1)
  • Delphi的两个实用技巧(2)巧用Wind...
  • 在线播放器DIY
  • Delphi控件,我们也可以(2)
  • Spcomm串口控件的例程
  • 用Delphi + DirectX开发简单RPG游...

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有