delphi 动态dll调用无参数procedure
小弟新手,求大神告知在DLL文件中的过程源码procedureInfShow();beginStaffIn:=TStaffIn.Create(Application);S...
小弟新手,求大神告知
在DLL文件中的过程源码
procedure InfShow();
begin
StaffIn := TStaffIn.Create(Application);
StaffIn.ShowModal;
end;
就是弹出窗口,然后 exports InfShow这个函数。
在引用的程序中,是静态
procedure InfShow(); external 'Search.dll';
然后直接在事件中InfShow()调用,是可以正常的
但问题是我想改成动态调用,该怎么实现呢?谢谢 展开
在DLL文件中的过程源码
procedure InfShow();
begin
StaffIn := TStaffIn.Create(Application);
StaffIn.ShowModal;
end;
就是弹出窗口,然后 exports InfShow这个函数。
在引用的程序中,是静态
procedure InfShow(); external 'Search.dll';
然后直接在事件中InfShow()调用,是可以正常的
但问题是我想改成动态调用,该怎么实现呢?谢谢 展开
1个回答
展开全部
procedure TForm1.Button1Click(Sender: TObject);
//调用Double函数
var
HInst: THandle; //声明句柄
p: Pointer; //声明一个指针
InfShow: procedure;stdcall;
begin
HInst := LoadLibrary('Search.dll'); //将指定的dll模块放入内存
if HInst <> 0 then
begin
try
p := GetProcAddress(HInst,PChar('InfShow')); //InfShow过程
if p <> nil then
begin
InfShow := p;
InfShow; //调用过程
end;
finally
FreeLibrary(HInst);
end;
end
else
ShowMessage('加载Search.dll失败!')
end;
//调用Double函数
var
HInst: THandle; //声明句柄
p: Pointer; //声明一个指针
InfShow: procedure;stdcall;
begin
HInst := LoadLibrary('Search.dll'); //将指定的dll模块放入内存
if HInst <> 0 then
begin
try
p := GetProcAddress(HInst,PChar('InfShow')); //InfShow过程
if p <> nil then
begin
InfShow := p;
InfShow; //调用过程
end;
finally
FreeLibrary(HInst);
end;
end
else
ShowMessage('加载Search.dll失败!')
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询