知识大全 Delphi开发嵌入式IE浏览器监控程序

Posted

篇首语:学而不思则罔,思而不学则殆。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi开发嵌入式IE浏览器监控程序相关的知识,希望对你有一定的参考价值。

Delphi开发嵌入式IE浏览器监控程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

引言

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

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

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

基础知识

   编程

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

   IE浏览器的体系结构

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

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

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

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

   实现对象

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

  ( )运行Delphi 依次点击File|New|Other 切换到ActiveX页面 选择ActiveX Library 点击OK按钮 即建立一个新的工程

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

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

TIEMonitor = class(TComObject IDispatch IObjectWithSite)public functionGetTypeInfoCount(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; varParams; VarResult ExcepInfo ArgErr: Pointer): HResult; stdcall;private IEThis:IWebBrowser ; Cookie:Integer; protectedend;  注意在UIEMonitor pas单元文件的Uses中需要手动加入对SHDOCVW Dialogs SysUtils Forms的引用

  其中主要是对IObjectWithSite接口的SetSite()方法和IDispatch接口的Invoke()方法的实现:首先通过SetSite()方法获得IE的WebBrowser接口 然后寻找连接点 并且通过调用Advise()方法建立自身与连接点的连接;当连接建立成功后 IE在事件引发后 会调用连接到自身的IDispatch接口对象的Invoke方法 不同的事件对应不同的DispID编码 因此可以通过在程序中判断DispID对不同的事件做出相应的处理 系统主要对BeforeNavigate DownLoadComplete和OnQuit三个事件进行处理 它们对应的DispID分别为 和 在Invoke()方法中 根据DispID分别调用DoBeforeNavigate () DoDownLoadComplete()和DoOnQuit()函数实现相关处理和控制功能 具体实现详见程序源代码

  ( )编译工程 生成DIEMonitor dll文件

   注册/卸载对象

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

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

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

   开发监控模块

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

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

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

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

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

   开发维护程序

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

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

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

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

cha138/Article/program/Delphi/201311/8526

相关参考

知识大全 用Delphi监控IE浏览器[1]

用Delphi监控IE浏览器[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 用Delphi监控IE浏览器[2]

用Delphi监控IE浏览器[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!图 &n

知识大全 用IE和SQL2k开发一个XML聊天程序

用IE和SQL2k开发一个XML聊天程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  不同浏览

知识大全 利用浏览器实现程序界面与实现的分离

 引言  在用DelphiVisualBasic等可视化快速开发工具编写Windows应用程序时常会遇到这样几个问题    )希望程序界面美观在Delphi中开发人员通常使用各种控件来实现界面的风格化

知识大全 嵌入式驱动开发和用单片机写一个程序驱动一个器件和芯片是不是类似的,求解决

嵌入式驱动开发和用单片机写一个程序驱动一个器件和芯片是不是类似的,求解决?我以前学校51和AVR,现在学习ARM9,和你分享一下我的观点,单片机如51和AVR之类,是对硬件的操作,不能跑操作系统,能力

知识大全 IE Toolbar

用VC开发IE浏览器插件:IEToolbar  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如果你下

知识大全 第一个delphi for php的小程序

  今天化了一个小时写了一个小程序我的delphiphp的第一个程序功能是在浏览器上显示一道简单的加法题用户可以输入答案电脑会告诉你正确或者错误然后可以再来一题功能很简单主要为了熟悉delphifor

知识大全 Delphi开发Windows服务程序

Delphi开发Windows服务程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  开发步骤:

知识大全 Delphi开发数据库应用程序概述(一)[2]

DELPHI基础教程:Delphi开发数据库应用程序概述(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 Delphi开发数据库应用程序概述(一)[1]

DELPHI基础教程:Delphi开发数据库应用程序概述(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快