插件管理框架 for Delphi(一)
插件技术的出发点主要是为了使软件能够灵活地进行扩展功能,而不需要对主程序(框架程序)进行重新编译和发布。它的原理相当简单。软件的功能由框架程序和插件来决定。在框架程序和插件之间具有一个特定的接口,它们两者须通过这个接口来传递数据或控制信息,以实现软件功能。因此,只要符合该接口的程序(或其他功能实体),就称为该框架程序的插件。
插件实体一般分为两种,一种是包含逻辑的程序,比如动态库、Exe程序等;另一种则是一组配置信息。前一种方式多见于作图软件,媒体播放软件,适合实现复杂的功能;后一种方式多用于实现软件的Skin(皮肤)功能,以及其他一些不需要进行复杂运算的功能模块(有许多游戏软件的关卡也是采用此种方式实现,比如阿达软件的连连看)。
本篇给出在实现Dll插件方式框架程序的过程中,对Dll进行管理的框架程序及使用例子,作为读者进行插件程序设计的基础。具体而言,框架程序需要完成插件的装载、功能调用以及卸载三类功能。
其实每个控制面板程序,都是操作系统的插件。因为每个.cpl文件就是实现了特定接口的Dll。Windows的服务程序也是如此,它也只是在原有程序的基础上处理了特定的windows消息而已。
其实从广义上讲,每个运行在操作系统上的程序都是操作系统这个软件的“插件”。
其实在Delphi中,已经有一个插件管理的框架,那就是bpl。采用bpl组件包的方式也可以轻松实现功能的插件化扩展。只是该方式有个缺点:不支持其他开发工具(如vb、vc++)进行插件开发。
)
untDllManager单元中定义了两个基础的类:
TDll:所有Dll类的父类,提供了装载、卸载的相关操作;
TDllManager:Dll类的容器类。支持删除元素方式卸载Dll实体。
以下为类图:
相关推荐
-
插件管理框架 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
随机推荐
- 使用vbscript脚本在表单中进行选择的代码
- php正则去除网页中所有的html,js,css,注释的实现方法
- 在android开发中进行数据存储与访问的多种方式介绍
- java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解
- Centos 64位安装aapt、jdk、tomcat的详细教程
- javascript中闭包(Closure)详解
- ASP.NET使用WebService实现天气预报功能
- 详解在DevExpress程序中使用TreeList控件以及节点查询的处理
- 解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
- 解析PHP的Yii框架中cookie和session功能的相关操作
- 正则表达式(regex) 贪婪模式、懒惰模式使用方法
- C#中数组Array,ArrayList,泛型List详细对比
- 网站性能提高实战经验点滴记录
- 详解C++的String类的字符串分割实现
- 基于jQuery的树控件实现代码(asp.net+json)
- Provider错误80004005终极解决方法(完全有效的方法)
- sql字符串函数大全和使用方法示例
- IIS 8.5下设置404错误页图文教程
- Android入门之使用eclipse进行源码开发的方法
- Android HttpURLConnection断点下载(单线程)
