: 调用一个动态库,但动态库中的函数与过程都得定义句柄,这个动态库的作用是接受一个外部设备传来的数据,其中一个函数是
function BeginCom(ComNo:integer;var ComHandle: Thandle):integer;stdcall;
// 功能:启用Com.
// 参数说明:ComNo:整型,指定Com编号;
// ComHandle:句柄,指定Com句柄;
外部设备是一个识别盒子,简称com,我想问的是comhandle如何取值.
各位大虾赐教了~~~
function BeginCom(ComNo:integer;var ComHandle: Thandle):integer;stdcall;
// 功能:启用Com.
// 参数说明:ComNo:整型,指定Com编号;
// ComHandle:句柄,指定Com句柄;
外部设备是一个识别盒子,简称com,我想问的是comhandle如何取值.
各位大虾赐教了~~~
var
Hand: THandle;
Proc: FarProc;
BeginCom: TBeginCom
FrmChild: TForm;
I: Integer;
begin
Hand := LoadLibrary(pchar(Dll_File)); //加载链接库
Proc := GetProcAddress(Hand, 'BeginCom');//入口地址
if Proc = nil then
begin
FreeLibrary(Hand);
Msgbox(Handle,Pchar('找不到指定模块: '+Dll_File));
exit;
end;
BeginCom := TProvaChild(Proc);
I := BeginCom (ComNo, ComHandle);
end;
var
Hand: THandle;
Proc: FarProc;
BeginCom: TBeginCom
I: Integer;
begin
Hand := LoadLibrary(pchar(Dll_File)); //加载链接库
Proc := GetProcAddress(Hand, 'BeginCom');//入口地址
if Proc = nil then
begin
FreeLibrary(Hand);
Msgbox(Handle,Pchar('找不到指定模块: '+Dll_File));
exit;
end;
BeginCom := TBeginCom(Proc);
I := BeginCom (ComNo, ComHandle);
end;
你要传入的值
BeginCom (ComNo, ComHandle);
看好函数的定义var ComHandle: Thandle
就是让你传递一个Thandle类型的变量进去好返回值,这个值不是你要赋的,而是调用函数返回的。