1、1加密插件实现摘要:加密插件应用程序是一个 IE 的加载项,实现下载过程中自动加密的功能。加密插件采用微软的 BHO 技术开发,替换了 IE 默认的文件下载处理程序,实现对下载文件的自动加密处理。加密插件是一个标准的 COM 应用程序,通过 ATL 技术完成 COM 对象的实现。加密插件是一个 DLL,本文论述的并不能运行,是通过 IE 加载他的功能组件。 关键词:加密插件 功能 实现 一、主要功能类 除了使用公共业务层中的类以外,实现加密插件还包括几个主要的类,见下图所示: 图 1 加密插件主要功能类 这些类按照功能划分,分为程序框架类、界面处理类、COM 接口相关实现类、其他辅助功能类等四
2、种类型。 二、针对每个类的具体说明 CMyBHOApp 主应用程序类,也是用用程序的入口。从 MFC 的 应用程序类 CWinApp 派生。主要的函数有: InitInstance 初始化实例。设置一些全局变量的初始值,检查当前加载该应用的宿主应用程序是否为 IE 浏览器。 ExitInstance 退出应用实例。 CMyBHOModule 组件模块类,通过 ATL 的 CAtlDllModuleT 类模版实2现。通过 ATL 类模版中实现的功能,完成 COM 组件库的自动注册功能。 CDLProgress 文件下载进度处理界面类,是一个界面视图类。该类实现一个 MFC 的标准的 Dialog
3、 窗口,显示文件下载的进度信息。主要功能函数包括: RefreshTitle 刷新窗口的标题信息。窗口的标题显示正在下载的文件名称、来源网站信息以及文件的下载进度。每当下载进度更新时,需要调用该方法刷新窗口的标题栏。 SetProgress 设置下载进度。 SetFinish 下载完成,设置进度条。 SetCloseWait 非自动关闭状态,设置关闭按钮。即允许通过点击关闭按钮来关闭下载进度信息窗口。 IsAutoClose 判断是否为自动关闭状态。 ReleaseWindows 释放窗口对象。 CFileSaveDialog 设置文件保存属性对话框类。这个类主要用来提示用户选择下载文件的加密
4、模式(明文下载还是加密下载) ,以及输入文件的加密口令。主要功能函数有: OnInitDialog 初始话对话框,设置初始参数。 OnBnClickedOk 点击确定按钮时的处理函数。保存界面上用户输入的数据,检查输入的口令是否一直。 OnBnClickedCancel 点击取消按钮时的处理函数。关闭当前对话框,结束当前文件下载流程。 CDownloadMonitor COM 接口的实现类,主要实现3IObjectWithSiteImpl 接口和 IDownloadManager 接口。通过IObjectWithSiteImpl 接口实现与 IE 之间的交互,通过IDownloadManage
5、r 接口实现一个自定义的文件下载管理器。该类从CUtilMan 派生,CUtilMan 类主要封装实现 IDownloadManager 的相关接口。CDownloadMonitor 类从 CUtilMan 类继承了所有 IDownloadManager接口的实现。主要的功能函数有: SetSite 由 IObjectWithSiteImpl 接口提供,作为 BHO 和 IE 之间的交互接口,将 IE 的 COM 组件模型对象的引用交给 BHO 对象进行处理。在该函数的实现中,实现了对 FileDownload 事件处理函数的注册。 FileDownload 事件处理函数。当 IE 中有文件下
6、载事件发生时,会触发该函数的调用。该函数在 SetSite 函数中进行注册的。在这个事件处理函数中,会检查 IE 的默认文件下载管理器是否为加密下载组件 BHO实现的文件下载管理器,如果不是则立即进行注册修改。 CUtilMan 下载管理器工具类,主要封装实现了 IDownloadManager接口,实现一个 IE 的自定义的文件下载管理器的功能。该工具类中,对文件下载管理器接口第一个各种触发事件进行了处理,实现 IE 文件下载过程与 BHO 对象内部处理过程之间的交互。CUtilMan 对下载任务进行管理,通过 WBBSCBFileDL 类创建和处理下载任务,并加入任务列表进行管理。 WBB
7、SCBFileDL 下载管理器辅助对象,实现一个简单的下载管理器,处理一个独立的下载任务。 CUrlParts Url 处理来辅助类,从 HTTP 请求数据包中分析和提取4Url 信息,以及下载文件的文件名、文件大小等相关信息。 CTmpBuffer 临时缓冲处理辅助类,用于进行文件数据接收的临时缓存处理。 三、 界面设计 加密插件的主要功能通过 COM 接口提供,由 IE 进行加载和调用。在完成下载的过程中,设计到两个用户界面,分别为文件下载进度界面和选择加密模式界面。这两个界面都采用 MFC 的对话框窗口来实现。 参考文献: 1范志先,孙殿柱,李延瑞,孙肖霞.采用 MFC 开发用户交互界面的新方法J.工程图学学报.2008(04) 2宋坤,秦宏胜,周卫华,车云霞,申泮文.使用 MFC 与 ATL 两种工具开发 ActiveX 控件J.计算机与应用化学.2000(05) 3刘论战.软件开发中的人机界面设计方法J.信息与电脑(理论版) ,2009, (12) 4付岩,白硕,李国杰.设计模式与 MFC 中的文档-视图结构J.计算机科学.2000(09) 5李永亮,葛维春,王芝茗.IEC61850 通讯标准中的编码规范ASN.1J.电力系统保护与控制.2008(22)