摘要: 随着网络的发展和普及,对网络的监控日益成为网络安全的必然要求,也是管理和维护网络的一个有效手段。当前已经有多种应用比较广泛的网络监控和过滤程序,如美萍网管、we-blocker等,它们都可以实现基于网络URL和IP地址的监控和过滤功能。  本文将对如何开发一个嵌入到IE浏览器中的监控程序进行介绍,该程序可以根据网络URL和IP地址进行监控和过滤,并且记录系统日志,从而使你对IE(当然是使用它的用户... 阅读全文
posted @ 2009-08-28 22:59 on_road 阅读(3604) 评论(0) 推荐(0) 编辑
摘要: 浏览器辅助对象BHO(Browser Helper Object)是一种ATL COM对象,由IE在启动时自动加载。BHO运行在IE的地址空间内,能对IE中可访问对象的各类事件消息进行监听并作出相应处理。因此,当IE已成为进入网络世界的主要大门时,BHO自然变得炙手可热,不管是扩展IE功能的辅助软件还是令人深恶痛绝的流氓软件,都对BHO青睐有加。那么,用于扩展IE功能的BHO插件到底如何开发呢?下面以开发一个过滤特定网址的BHO插件为例进行说明。 阅读全文
posted @ 2009-08-28 22:55 on_road 阅读(1986) 评论(0) 推荐(0) 编辑
摘要: 当你的系统安装了Winzip之后,当把任意一个文件拖放到ZIP文件上后,你会发现鼠标的光标变成了一个+字符号样,你一松开鼠标,就会调用 Winzip询问你是否要把拖放的文件加入当前的Zip文件里去,可是我们试了一下别的文件却没有这种功能,这表明缺省情况下,文件不是拖放目标,那么 Winzip是如何做到的? 实际上只要实现一个被拖放的文件类的拖放扩展就可以很简单地做到了。当一个文件类型注册了一个拖放扩展后,任何时候一个外壳对象被拖放到文件类型的一个成员上时,外壳管理器都会自动调用扩展的IDropTarget的相应方法。 注册扩展 阅读全文
posted @ 2009-08-28 22:53 on_road 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 记录外壳的活动 记录外壳活动有很多好处,比如当需要监控用户的行为,回溯系统崩溃前的过程。实现这一功能的关键工具相当简单,它就是COM接口 IShellExecuteHook。编写一个实现了这一接口的COM对象后,再在系统中注册,就可以容易地控制并影响Windows外壳的运行。 Windows 98和Windows 2000都支持IShellExecuteHook外壳扩展,而在Windows 95和Windows NT 4.0上则必须安装活动桌面扩展后才支持( 阅读全文
posted @ 2009-08-28 22:52 on_road 阅读(430) 评论(0) 推荐(0) 编辑
摘要: Windows外壳支持几种搜索功能,允许用户定位命名空间对象(如文件、局域网上的电脑、打印机、回收站等),那么我们可不可以自己创建一个搜索引擎并注册到系统来搜索特定的对象呢?答案是可以的,但这需要实现搜索扩展。 搜索扩展的工作方式 用户可以有两种方式来实现搜索引擎,第一种是从开始菜单调用查找,可以显示一个当前可用的搜索引擎列表,如图2.1所示。第二种是从资源管理器中调用查找 功能,在文件夹上点右键... 阅读全文
posted @ 2009-08-28 22:50 on_road 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 一般介绍 很多人一定用过ZipMagic,对它能把一个压缩文件映射成文件夹感到很奇怪,不知道它使用了什么技术,实际上它用到的技术就是实现了一个外壳的命名空间扩展(Shell Namespace Extention)。 文件夹和视图:资源管理器的基本结构 阅读全文
posted @ 2009-08-28 22:49 on_road 阅读(1466) 评论(0) 推荐(0) 编辑
摘要: 代码复用和界面复用 面向对象的编程思想强调代码的可复用。而Delphi的精髓实际上就是Object Pascal语言,Object Pascal语言是一个非常强大的面向对象的编程语言,可以通过对象的继承实现代码复用。同时Delphi作为一个强大的RAD开发工具,不仅可以实现代码复用,还可以实现可视化界面的复用。 基于复制粘贴的界面重用 阅读全文
posted @ 2009-08-28 22:46 on_road 阅读(1800) 评论(0) 推荐(0) 编辑
摘要: 所谓停靠就是可以用鼠标拖动窗体或者控件,并将其从一个父窗体移出或者移动到另一个父窗体上,可以按水平,垂直方 向整齐排列, 并且可以停靠在分页控制组件上。下面的示意图是一个Delphi IDE的窗口停靠示意图: 阅读全文
posted @ 2009-08-28 22:45 on_road 阅读(1867) 评论(0) 推荐(0) 编辑
摘要: 介绍 对于每天都要使用的IE浏览器的人来说,输入www.google.com 等网址进行网上冲浪就象呼吸一样自然。大多数情况时,我们可能根本想不起来要在网址前面加上http:// 来声明要访问的是一个基于http协议的Web网站。所谓网络协议,其实无非就是一组描述如何获取不同资源并进行通讯的行为规则。IE浏览器除了内置了对 http协议外,还持ftp和gopher等协议。 从IE4开始,IE允许通过插入式异步协议扩展来扩展它处理协议的功能, 阅读全文
posted @ 2009-08-28 22:44 on_road 阅读(843) 评论(0) 推荐(0) 编辑
摘要: 介绍 用过3721的人都知道,当我们在地址栏中直接输入一个非网址的中文名字后,3721搜索引擎可以获得我们输入的中文名字进行查找,并提供一个同中文名字匹配的搜索结果列表。3721的这项功能其实并不神秘,我们可以通过IE的地址搜索扩展来实现。所谓搜索扩展就是当用户在IE地址栏中或通过链接连接到一个没有指定协议的字符串(如hubdog.csdn.net,这里没有指定http协议),IE首先会试图确定字符串的真实协议,如果无法确定的话,它就会创建搜索扩展对象,并调用扩展对象的Translate方法来解析地址。我们可以通过自定义的扩展来对网址进行解析处理,返回一些的有特殊意义的结果。 比如我平时查东西都喜欢用Google,但是每次查询都需要连接到Google网站上进行输入。下面就来看如何实现一个搜索扩展,可以当在地址框中输入一个非网址的字符串后,自动调用Google来进行检索。 阅读全文
posted @ 2009-08-28 22:44 on_road 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 介绍 随着网络免费的大潮的退去,网站变得越来越商业化。浏览一些常去的网站,每看一个页面都会弹出N多的广告窗口,而且都是花花绿绿的Flash和Gif小动画,浪费带宽(我在家还是拨号上网),同时干扰了正常的阅读,非常讨厌。那么如何才能将这些广告屏蔽掉呢?答案就是Browser Helper Object(简称BHO)。 BHO实际上也是一个简单的IE扩展COM组件,它和其它COM组件的区别就在于其它扩展需要一些用户的手工操作,如点击菜单,点击工具条按钮,在地址栏输入网址等等触发动作才会被IE加载。而BHO则不同,每当IE启动时,都会自动去加载BHO而无须任何触发条件,另外BHO还可以监听IE的各类事件的通知消息,比如窗 口大小的变化,下载是否完成等事件。 由于BHO可以在一启动IE就被加载,并能监听各种事件,我们就可以使用BHO扩展实现限制用户浏览某些色情网站,或者搜集用户浏览喜好信息等功能。接下来, 我们就来实现一个能够阻断广告弹出的BHO扩展。 阅读全文
posted @ 2009-08-28 22:43 on_road 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 介绍 大家都知道,在使用IE浏览页面时,经常需要下载一些文档和页面,我们可以选中连接然后点击右键菜单中的目标另存为…菜单,并弹出另存为对话框,我们可以将文件保存在指定目录下。见下图 阅读全文
posted @ 2009-08-28 22:42 on_road 阅读(1156) 评论(0) 推荐(0) 编辑
摘要: 简介 IE的面板实际就是嵌入到IE浏览器中的子窗体。面板有两种显示模式,一种是垂直显示在浏览器的左侧,一种是水平显示在浏览器的下方。IE浏览器内置提供了很多的标准面板,如收藏夹和搜索面板这些是垂直的面板,而每日提示和讨论面板则是水平的面板。 阅读全文
posted @ 2009-08-28 22:41 on_road 阅读(3326) 评论(0) 推荐(0) 编辑
摘要: 介绍 向IE中添加的自定义菜单,可以被用来执行可执行文件,脚本语言和COM对象的方法,对于前两种执行方式,相对比较简单,只需要对注册表进行编程就可以了,但是能够执行的功能非常有限,而使用COM组件扩展IE菜单则相对复杂,但是能够执行的功能也相对是最强大的,所以下面我就主要介绍基于COM的菜单扩展方式,还要注意的一点是只有IE5及以后的版本才支持菜单的扩展。 创建COM组件 对于一个IE菜单项COM组件来说,它最少需要实现IOleCommandTargetCOM接口,如果COM组件还想要对当前IE中显示的页面进行操作的话,就还需要实现IObjectWithSite接口,对于IObjectWithSite接口,我将在后面的工具条按钮扩展中讨论它的实现。 首先在Delphi中用New | Other命令调出New Items对话框,然后在ActiveX页面中选择创建一个新的ActiveX Library,将项目保存为IEMenu.dpr,然后再次调用New | Other | ActiveX命令,新建一个名为TIEHelloWorld的Com Object对象,然后添加I 阅读全文
posted @ 2009-08-28 22:39 on_road 阅读(1019) 评论(0) 推荐(0) 编辑
摘要: 介绍 除了可以向IE中添加自定义菜单外,我们还可以向IE的工具条上添加自定义的按钮。自定义按钮同自定义菜单COM扩展的实现几乎一样, 除了在注册时需要添加的注册表项不同。 注意:同菜单扩展一样,自定义的按钮扩展也必须是IE5及以后的版本才支持。 阅读全文
posted @ 2009-08-28 22:39 on_road 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 插件结构的编程需要一个插件容器来控制各DLL的运行情况,将划分好的每个子系统安排到一个DLL库文件中。对每个DLL程序需要为容器预留接口函数,一般接口函数包括:启动调用DLL库的函数、关闭DLL库的函数。通过接口函数,插件容器可以向DLL模块传递参数实现动态控制。具体实现细节我将在下文说明并给出响应代码。   您可能需要先了解一下DELPHI中UNIT的结构,工程的结构。本文没有深入讨论DLL编程的理论细节,只是演示了一些实用的代码,我当时学习的是刘艺老师的《DELPHI深入编程》一书。   我也处于DELPHI的入门阶段,只是觉得这次的DLL开发有一些值得讨论的地方,所以写这篇文章,希望各位能对我做的不好的地方慷慨建议。   示例程序简介 阅读全文
posted @ 2009-08-28 22:38 on_road 阅读(384) 评论(0) 推荐(0) 编辑
摘要: IE除了允许我们添加自定义的主菜单外,还允许在右键菜单中添加自定义的菜单,。很多著名的网络软件如网络蚂蚁,、网际快车等都在右键菜单中添加了可以用来下载文件的快捷菜单。IE的右键菜单扩展同其它COM扩展不太一样,其它扩展只要在注册表中填写一定的配置信息就可以使用了,而右键菜单扩展必须由一个JavaScript脚本来创建并调用其中的方法。由于我们的COM组件必须能从脚本语言中创建,因此右键菜单扩展的必须是一个Automation(自动化)组件,也就是说除了IUnknown接口外,还必须支持IDispatch接口。幸好,Delphi提供了内置的自动化COM组件的支持,我们只需要从TAutoObject而不是标准的TComObject派生COM组件就可以了。 经常使用IE复制粘贴网页上的信息,我发现IE右键菜单中的复制命令不是很方便,比如当在一个超链接上激活右键菜单,会发现只有复制快捷方式可以使用,而复制菜单为灰色被禁用状态,而有时我不仅想复制超链接本 阅读全文
posted @ 2009-08-28 22:37 on_road 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 在Windows操作系统上,我们最常见的浏览器有两种:文件浏览器(exploer.exe,应用于文件系统)和Internet浏览器(iexplore.exe,应用于互联网资源)。由于这两个浏览器功能强大,而且又与Windows操作系统捆绑销售,最终也就成为了浏览器的标准。但有时候,为了给浏览器加入一些新的特性,我们往往会重新设计一个自己的浏览器。新的浏览器模仿标准浏览器的大部分功能,同时加入新特性。这种做法最直观,但实际上也是相对于微软的重复劳动,且工作量比较大。其实,使用BHO插件,一切都变得很简单。 BHO(Browser Help Objects),是实现了特定接口的COM组件。开发好的BHO插件在注册表特定的位置注册好后,每当微软的浏览器启动,BHO实例就会被创建。在浏览器工作的工程中,BHO会接收到很多事件,比如浏览器 阅读全文
posted @ 2009-08-28 22:35 on_road 阅读(2232) 评论(1) 推荐(0) 编辑
摘要: //数据同步线程 TThreadUpdateData = class(TThread) public lSendHandle :HWND; //线程创建过程,参数CreateSuspended表示创建时线程是否挂起, constructor Create(CreateSuspended: Boolean); //线程销毁 阅读全文
posted @ 2009-08-28 16:05 on_road 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 有时,在有大量图片或者复杂的界面下,会出现界面闪烁。这是由于windows默认在绘制界面前会用背景色清空,然后重绘。 因为默认背景色一般是白色的,当重绘速度慢时,看起来界面就在闪烁了。 那有没有在不提高界面绘制速度的情况下,防止闪烁呢,常用的办法就是启用双缓冲机制。 双缓冲绘制,就是在内存预先绘制好图形,再拷贝到界面上。中途不再清白背景。 delphi的wincontrol组件提供了双 阅读全文
posted @ 2009-08-28 16:04 on_road 阅读(2218) 评论(0) 推荐(0) 编辑