读书人

生手求教一个含窗体的DLL的例子

发布时间: 2013-03-01 18:33:02 作者: rapoo

新手求教一个含窗体的DLL的例子。
自己想做个可以传出 参数 的DLL,百度里的都好复杂。请有空的老师帮忙做个最简单的DLL,并说说要怎么调用,万分感谢。

调用DLL时,出现一个窗体,按下窗体按钮就 传出 一个 参数,然后关闭窗体,并释放内存。 谢谢。 dll
[解决办法]
弄了例程,你照虎画猫吧
http://pan.baidu.com/share/link?shareid=366238&uk=2500077576

[解决办法]
看本例可以传入参数到Dll
http://pan.baidu.com/share/link?shareid=366373&uk=2500077576
[解决办法]
Dll的项目文件


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

读书人网 >.NET

热点推荐