虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Delphi编程 > Delphi 用DLL实现插件的简单实例

Delphi 用DLL实现插件的简单实例
类别:Delphi编程   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了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;
    {
    $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实现插件的实例 Delphi 用DLL