16,749
社区成员
发帖
与我相关
我的任务
分享
library MyDll;
uses
SysUtils,
Classes,
Unit13 in 'Unit13.pas' {Form13};
{$R *.res}
function GetForm(const Tag : integer) : Integer;
begin
//TForm13中有一个TButton, ModalResult属性设为mrOk;
with TForm13.Create(nil) do
begin
Caption := Format('Tag:%d', [Tag]);
result := ShowModal;
free;
end;
end;
exports
GetForm;
begin
end.
调用单元的代码, 两个TButton, 分别为btn1, btn2
//静态调用 Begin
function GetForm(const Tag : integer) : Integer; external 'MyDll.dll';
procedure TForm14.btn1Click(Sender: TObject);
var
n : integer;
begin
n := GetForm(1);
caption := Format('Result:%d', [n]);
end;
//静态调用 End
//动态调用 Begin
procedure TForm14.btn2Click(Sender: TObject);
type
TGetForm = function (const Tag : integer) : Integer; stdcall;
var
DllForm : TGetForm;
DllHandle : THandle;
n : integer;
begin
DllHandle := LoadLibrary(PChar('MyDll.dll'));
try
if DllHandle <> 0 then
begin
DllForm := GetProcAddress(DllHandle, 'GetForm');
n := DllForm(1);
caption := Format('Result:%d', [n]);
end;
finally
FreeLibrary(DllHandle);
end;
end;
//动态调用 End