插件管理框架 for Delphi(一)

插件技术的出发点主要是为了使软件能够灵活地进行扩展功能,而不需要对主程序(框架程序)进行重新编译和发布。它的原理相当简单。软件的功能由框架程序和插件来决定。在框架程序和插件之间具有一个特定的接口,它们两者须通过这个接口来传递数据或控制信息,以实现软件功能。因此,只要符合该接口的程序(或其他功能实体),就称为该框架程序的插件。
插件实体一般分为两种,一种是包含逻辑的程序,比如动态库、Exe程序等;另一种则是一组配置信息。前一种方式多见于作图软件,媒体播放软件,适合实现复杂的功能;后一种方式多用于实现软件的Skin(皮肤)功能,以及其他一些不需要进行复杂运算的功能模块(有许多游戏软件的关卡也是采用此种方式实现,比如阿达软件的连连看)。
本篇给出在实现Dll插件方式框架程序的过程中,对Dll进行管理的框架程序及使用例子,作为读者进行插件程序设计的基础。具体而言,框架程序需要完成插件的装载、功能调用以及卸载三类功能。
其实每个控制面板程序,都是操作系统的插件。因为每个.cpl文件就是实现了特定接口的Dll。Windows的服务程序也是如此,它也只是在原有程序的基础上处理了特定的windows消息而已。
其实从广义上讲,每个运行在操作系统上的程序都是操作系统这个软件的“插件”。
其实在Delphi中,已经有一个插件管理的框架,那就是bpl。采用bpl组件包的方式也可以轻松实现功能的插件化扩展。只是该方式有个缺点:不支持其他开发工具(如vb、vc++)进行插件开发。

untDllManager单元中定义了两个基础的类:
TDll:所有Dll类的父类,提供了装载、卸载的相关操作;
TDllManager:Dll类的容器类。支持删除元素方式卸载Dll实体。
以下为类图:

(0)

相关推荐

  • 插件管理框架 for Delphi(一)

    插件技术的出发点主要是为了使软件能够灵活地进行扩展功能,而不需要对主程序(框架程序)进行重新编译和发布.它的原理相当简单.软件的功能由框架程序和插件来决定.在框架程序和插件之间具有一个特定的接口,它们两者须通过这个接口来传递数据或控制信息,以实现软件功能.因此,只要符合该接口的程序(或其他功能实体),就称为该框架程序的插件.插件实体一般分为两种,一种是包含逻辑的程序,比如动态库.Exe程序等:另一种则是一组配置信息.前一种方式多见于作图软件,媒体播放软件,适合实现复杂的功能:后一种方式多用于实现

  • 插件管理框架 for Delphi(二)

    unit untDllManager; interface uses Windows, Classes, SysUtils, Forms; type EDllError = Class(Exception); TDllClass = Class of TDll; TDll = Class; TDllEvent = procedure(Sender: TObject; ADll: TDll) of Object; { TDllManager o 提供对 Dll 的管理功能: o Add 时自动创建

  • Delphi 用DLL实现插件的简单实例

    Delphi 用DLL实现插件的简单实例 这是DLL的代码 实现代码: library MyDll; uses SysUtils, Dialogs, Classes; procedure ShowInfo(info:PChar);stdcall; begin ShowMessage('您选择了['+info+']'); end; function GetCaption:Pchar; begin Result := '中国'; end; exports ShowInfo, GetCaption;

  • 初探Delphi中的插件编程

    插件结构的编程需要一个插件容器来控制各DLL的运行情况,将划分好的每个子系统安排到一个DLL库文件中.对每个DLL程序需要为容器预留接口函数,一般接口函数包括:启动调用DLL库的函数.关闭DLL库的函数.通过接口函数,插件容器可以向DLL模块传递参数实现动态控制.具体实现细节我将在下文说明并给出响应代码. 您可能需要先了解一下DELPHI中UNIT的结构,工程的结构.本文没有深入讨论DLL编程的理论细节,只是演示了一些实用的代码,我当时学习的是刘艺老师的<DELPHI深入编程>一书. 我也处于

  • ckeditor syntaxhighlighter代码高亮插件配置分享

    最近由于自己想做一个网站形式的代码库,自已写一个在线文本编辑器,对于现在的我来,确实是很不切实际,呵呵!再说了,现在有一个非常好的在线文本编辑器(ckeditor)了,我和必再去费这等功夫呢!有现成的,拿过用就是的呗!正所谓的拿来主义!不过这个在线文本编辑器,对于我们程序员来说有一个算是缺陷吧!没有代码高亮的功能!这样把代码贴上去,很不好看!今天晚上,我总是把他给弄出来了.当然也采在别人的肩膀上做成的.在此感谢他们的分享!费话不多说了!咱们进入正题吧! 首先去官方网站下载个ckeditor 其次

  • CKEditor中加入syntaxhighlighter代码高亮插件

    从官网 下载ckeditor,我下载的是CKEditor 3.3.1 .CKEditor与原来的FCKeditor有太大的不同了,作为开发人员,在做自己的博客的时候总是需要贴代码的,只好给它先做一个插入代码的插件了.高亮代码用的是"SyntaxHighlighter ". 1.在"ckeditor/plugins/"目录下新建一个"insertcode"目录,然后在"insertcode"目录下新建一个"plugin

  • CKEditor 附插入代码的插件

    按照惯例,先来段废话:CKEditor是新一代的FCKeditor,是一个重新开发的版本.CKEditor是全球最优秀的网页在线文字编辑器之一,因其惊人的性能与可扩展性而广泛的被运用于各大网站. 从官网下载ckeditor,我下载的是ckeditor_3.0.2.CKEditor与原来的FCKeditor有太大的不同了,作为开发人员,在做自己的博客的时候总是需要贴代码的,只好给它先做一个插入代码的插件了.高亮代码用的是"SyntaxHighlighter". 1.在"cked

  • SyntaxHighlighter配合CKEditor插件轻松打造代码语法着色

    上网搜索了一下相关的文章不少,大同小异,本人一直使用的是CKeditor的文字编辑器,所以偿试使用网上很多网友介绍的SyntaxHighlighter配合CKEditor插件的方式实现.可能是因为SyntaxHighlighter和CKEditor版本不同,过程中遇到了一些问题,解决的同时也根据个人理解做部分调整,所以本文所描述的方法仅供参考. 一.SyntaxHighlighter简介 SyntaxHighlighter(原名:dp.SyntaxHighlighter)是一套在浏览器上对各种代

  • jQuery语法高亮插件支持各种程序源代码语法着色加亮

    1) highlightjs Highlight.js能够对页面中的各种程序源代码语法着色加亮.支持的语言包括: •Python •Ruby •Perl •PHP •XML •HTML •CSS •Django •Javascript •VBScript •Delphi •Java •C++ •RenderMan (RSL and RIB) •SQL •SmallTalk •Axapta •1C •Ini •Diff •DOS .bat •Bash 2) google-code-prettify

  • 25个最好的免费Eclipse插件

    Eclipse提供了一个可扩展插件的开发系统.这就使得Eclipse在运行系统之上可以实现各种功能.这些插件也不同于其他的应用(插件的功能是最难用代码实现的).拥有合适的Eclipse插件是非常重要的,因为它们能让Java开发者们无缝的开发基于J2EE和服务的应用程序.Eclipse的插件也能帮助他们开发不同应用架构上的程序. 下面列出来的是25个最好的免费Eclipse插件,可以让开发者更高效的工作 . 提高代码质量的插件 1. FindBugs FindBugs可以帮你找到Java代码中的b

随机推荐