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;
{$R *.res}
begin
end.
这是调用窗体的代码
本例只使用了一个DLL,所以当有多个DLL时,需要循环DLL所在目录,依次加载DLL
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls;
type
TShowInfo = procedure (info:PChar);stdcall;
TGetCaption = function : PChar;stdcall;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
MainMenu1: TMainMenu;
Image1: TImage;
procedure Button2Click(Sender: TObject); private
{ Private declarations }
FHandel : THandle; //DLL句柄
FProAddress: Pointer; //DLL中ShowInfo的地址
showinfo: TShowInfo; //为动态加载DLL而设
procedure LoadPlusIn; //加载插件(DLL)
procedure ItemClick(Sender: TObject); //自定义菜单点击事件
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
LoadPlusIn;
end;
procedure TForm1.ItemClick(Sender: TObject);
begin
@showinfo := FProAddress; //取地址
if @showinfo <> nil then
showinfo(PWideChar(TMenuItem(Sender).Caption)); //执行DLL中的ShowInfo
end;
procedure TForm1.LoadPlusIn;
var
getcaption: TGetCaption;
item : TMenuItem;
begin
FHandel := LoadLibrary('MyDll.dll'); //加载
if FHandel = 0 then
begin
ShowMessage('加载失败!');
Exit;
end
else
begin
@getcaption := GetProcAddress(FHandel,'GetCaption'); //取DLL中GetCaption地址
if @getcaption <> nil then
begin
item := TMenuItem.Create(MainMenu1); //创建一个菜单
item.Caption := getcaption; //取Caption,即调用DLL中的GetCaption
FProAddress := GetProcAddress(FHandel,'ShowInfo'); //取得DLL中ShowInfo的地址
item.OnClick := ItemClick; //赋予菜单项的点击事件
MainMenu1.Items.Add(item); //添加到主菜单
end;
end;
end;
end.
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Delphi
# 用DLL实现插件的实例
# 用DLL实现插件的演示
# Delphi 根据字符串找到函数并执行的实例
# Delphi 中内存映射对于大文件的使用
# Delphi提取PDF文本实例
# Delphi XE5 为Android应用制作签名的方法(图文)
# ListView 百分比进度条(delphi版)
# Delphi实现截屏存盘的方法
# Delphi实现窗体感知鼠标滑过并自动隐藏与显示窗口的方法
# Delphi 实现软件自动升级的功能
# 加载
# 这是
# 多个
# 句柄
# 如有
# 希望能
# 自定义
# 谢谢大家
# 创建一个
# 中国
# 本例
# 菜单项
# 疑问请
# 选择了
# 使用了
# Pchar
# exports
# res
# Result
# Forms
相关文章:
如何在Golang中指定模块版本_使用go.mod控制版本号
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何制作算命网站,怎么注册算命网站?
香港服务器选型指南:免备案配置与高效建站方案解析
存储型VPS适合搭建中小型网站吗?
个人网站制作流程图片大全,个人网站如何注销?
代购小票制作网站有哪些,购物小票的简要说明?
如何快速查询域名建站关键信息?
如何注册花生壳免费域名并搭建个人网站?
c# await 一个已经完成的Task会发生什么
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何高效配置IIS服务器搭建网站?
nginx修改上传文件大小限制的方法
seo网站制作优化,网站SEO优化步骤有哪些?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何解决ASP生成WAP建站中文乱码问题?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
制作电商网页,电商供应链怎么做?
如何快速生成高效建站系统源代码?
定制建站方案优化指南:企业官网开发与建站费用解析
企业微网站怎么做,公司网站和公众号有什么区别?
建站之星会员如何解锁更多建站功能?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何确保FTP站点访问权限与数据传输安全?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
网站制作网站,深圳做网站哪家比较好?
招贴海报怎么做,什么是海报招贴?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何通过服务器快速搭建网站?完整步骤解析
C++时间戳转换成日期时间的步骤和示例代码
h5在线制作网站电脑版下载,h5网页制作软件?
红河网站制作公司,红河事业单位身份证如何上传?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
建站VPS选购需注意哪些关键参数?
文字头像制作网站推荐软件,醒图能自动配文字吗?
,sp开头的版面叫什么?
如何快速查询网站的真实建站时间?
如何通过远程VPS快速搭建个人网站?
定制建站策划方案_专业建站与网站建设方案一站式指南
制作门户网站的参考文献在哪,小说网站怎么建立?
如何快速重置建站主机并恢复默认配置?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
建站之星CMS五站合一模板配置与SEO优化指南
*请认真填写需求信息,我们会在24小时内与您取得联系。