程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 靜態/動態調用dll封裝窗體(模態/非模態)

靜態/動態調用dll封裝窗體(模態/非模態)

編輯:Delphi

  delph XE下測試通過.   Dll項目文件 [delphi]   library Project10;      uses     SysUtils,     Classes,     Forms,     Unit14 in 'Unit14.pas' {Form1};      {$R *.res}      Function EDebtMoney(H: THandle): integer;   begin     Application.Handle := H;     with TForm1.Create(Application) do       try         ShowModal;         Result := 0;       finally         Free; { 調用結束時銷毀窗口 }       end;   end;      Function GetForm(H: THandle): THandle;   begin     Application.Handle := H;     with TForm1.Create(Application) do     try       Show;       Result := Handle;     except on e : Exception do       raise e.Create(e.Message);     end;   end;      exports EDebtMoney, GetForm;   begin      end.       dll中窗體關閉事件 [delphi]   procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);   begin     Action := caFree;   end;       調用單元 [delphi]   unit Unit13;      interface      uses     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,     Dialogs, StdCtrls;      type     TForm13 = class(TForm)       btn1: TButton;       btn2: TButton;       procedure btn1Click(Sender: TObject);       procedure btn2Click(Sender: TObject);     private       { Private declarations }     public       { Public declarations }     end;      var     Form13: TForm13;     function MyForm(H: THandle) : THandle; stdcall;   implementation      function MyForm; external 'Project10.dll' name 'GetForm';   {$R *.dfm}      //動態調用  模態窗口   procedure TForm13.btn1Click(Sender: TObject);   type     TGetForm = function (H: THandle) : Integer; cdecl;   var     DllForm : TGetForm;     DllHandle : THandle;     nn : integer;   begin     DllHandle := LoadLibrary(PChar('Project10.dll'));        try       if DllHandle <> 0 then       begin         DllForm := GetProcAddress(DllHandle, 'EDebtMoney');         nn := DllForm(Application.Handle) ;         self.Caption  := inttostr(nn);       end;     finally       FreeLibrary(DllHandle);     end;      end;   //靜態調用  非模態窗口   procedure TForm13.btn2Click(Sender: TObject);   var     DllHandle : THandle;   begin     DllHandle := MyForm(Application.Handle);   end;      end.    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved