已知dll中有以下函数和过程:
Function MyFunc(Name:String; age:integer):String; stdcall;
begin
result:=name + ' is ' + inttostr(age);
end;
Procedure SayHello; stdcall;
begin
showmessage( 'hello');
end;Procedure AskYou(Name:String); stdcall;
begin
showmessage(Name + ',what are you doing ? ' );
end;
-----------------
因为我不会静态调用,请给出以了函数和过程的静态调用方法。
最好是代码命名能规范些。
以上三个都请给出一个调用实例。
谢谢!
Function MyFunc(Name:String; age:integer):String; stdcall;
begin
result:=name + ' is ' + inttostr(age);
end;
Procedure SayHello; stdcall;
begin
showmessage( 'hello');
end;Procedure AskYou(Name:String); stdcall;
begin
showmessage(Name + ',what are you doing ? ' );
end;
-----------------
因为我不会静态调用,请给出以了函数和过程的静态调用方法。
最好是代码命名能规范些。
以上三个都请给出一个调用实例。
谢谢!
解决方案 »
- 请问怎么动态设置cxtreelist的单元格为InplaceEditor?谢谢
- Delphi调用COM
- 用过RealProducer Basic8.5的prct3260.ocx控件的高手请帮忙!
- 数据加密
- 图片显示质量问题
- InstallerShield
- 用SQL查询出来的结果如何存成 .dbf 文件?
- 我已经完成了数字拼图的游戏----谁要源代码呢?
- 代码实现更改显示器的亮度,色彩等
- 关于在三层数据库结构中把前台的WOED文件保存到后台的数据库中的问题??
- ServerSocker用线程方式 ,ClientSocket用阻塞模式,ServerSocket在收到信息后如何进行回复?在线等
- 怪事,用了Skin之后,有错了
用下面的方式
Moudle := Loadlibrary('ty.dll');假设文件名是 ty.dll
var
LibHandle :THandle;
MyFunc:TMyFunc;
begin
LibHandle := LoadLibrary('ty.dll');
if LibHandle <= 32 then
begin
Messagebox(handle,'ty.dll模块装载失败!'),'失败',MB_ICONERROR);
end
else
begin
@MyFunc := GetProcAddress(LibHandle,'MyFunc');
if(@MyFunc <> nil) then
begin
MyFunc(@Application);
end
else
Messagebox(handle,'该模块的入口函数错误!','失败',MB_ICONERROR);
end;
end;
这句在implementation前定义
TMyFunc = function(Name: string; Age: integer):string;
TSayHello = procedure();
TAskYou = procedure(Name: string); 然后定义三个方法类型的变量
MyFunc: TMyFunc;
SayHello: TSayHello;
AskYou: TAskYou; 最后就是调用了
var
Module: HMODULE;
TempStr: String;
begin
Module := Loadlibrary('ty.dll');
@MyFunc := GetProcAddress(Module, 'MyFunc');
@SayHello := GetProcAddress(Module, 'SayHello');
@AskYou := GetProcAddress(Module, 'AskYou');
TempStr := MyFunc;
end;
Name, TempStr: String;
Age: Integer;
Begin
...
Name := '123';
Age := 100;
TempStr := MyFunc(Name, Age);
end
Function MyFunc(Name:String; age:integer):String; stdcall;external 'DLL的路径';
在后面就直接可以调用该函数了!
//ExceptionLog,
HKProc in 'HKProc.pas';exports
EnableHotKeyHook,
DisableHotKeyHook;begin
hNextHookProc := 0;
end.