zoukankan      html  css  js  c++  java
  • Delphi生成即调用带窗体的Dll

    library frmDll;
    
    { Important note about DLL memory management: ShareMem must be the
      first unit in your library's USES clause AND your project's (select
      Project-View Source) USES clause if your DLL exports any procedures or
      functions that pass strings as parameters or function results. This
      applies to all strings passed to and from your DLL--even those that
      are nested in records and classes. ShareMem is the interface unit to
      the BORLNDMM.DLL shared memory manager, which must be deployed along
      with your DLL. To avoid using BORLNDMM.DLL, pass string information
      using PChar or ShortString parameters. }
    
    uses
      SysUtils,
      Classes,
      Forms,
      FormDll in 'FormDll.pas' {Form1};
    
    {$R *.res}
    
    function GetDllForm:TForm;stdcall;export;//定义导出方法;
    begin
      result:=Form1; //函数返回类型为一个窗体;
    end;
    exports
      GetDllForm;//声明可导出的方法;
    
    begin
    end.
    
    
    
    
    unit FormDll;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      MessageDlg('你已经成功调用了Dll控件',mtinformation,[mbOK],0);
    end;
    
    initialization //在单元中放在文件结尾前,包含用来初始化单元的代码,它在主程序运行前运行并且只运行一次
    begin
      Form1:=TForm1.Create(Application);
    end;
    
    finalization//在单元中放在 initialization 和 end. 之间,包含了单元退出时的代码。程序退出时运行并且只运行一次。
    begin
      Form1.Free;
    end;
    
    end.
    
    
    
    
    
    unit testdll;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      //function GetDllForm:TForm;
    
    implementation
    
    {$R *.dfm}
    function GetDllForm:TForm;external 'frmDll.dll';  //声明从函数frmDll.dll中调用函数
    
    
    procedure TForm1.btn1Click(Sender: TObject);
    var
      AForm:TForm;
    begin
      AForm:=GetDllForm;
      AForm.Show;
    end;
    
    end.
     
    书搞进脑袋 创新 创造; 积极
  • 相关阅读:
    hangfire 本地可以正常打开hangfire页面,发布后报401
    core 引用webservice
    ABP自带原框架生成使用
    ABP框架问题排查记录
    转-image js binary
    贪心算法
    动态规划-练习
    分治算法-快速,归并
    ECMAScript5的新特性
    css-动画
  • 原文地址:https://www.cnblogs.com/tobetterlife/p/12169918.html
Copyright © 2011-2022 走看看