: 调用一个动态库,但动态库中的函数与过程都得定义句柄,这个动态库的作用是接受一个外部设备传来的数据,其中一个函数是
function BeginCom(ComNo:integer;var ComHandle: Thandle):integer;stdcall;
//  功能:启用Com.
//   参数说明:ComNo:整型,指定Com编号;
//          ComHandle:句柄,指定Com句柄;
外部设备是一个识别盒子,简称com,我想问的是comhandle如何取值.
各位大虾赐教了~~~

解决方案 »

  1.   

    TBeginCom = function (ComNo:integer;var ComHandle: Thandle):integer;stdcall;
    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;
      

  2.   

    TBeginCom = function (ComNo:integer;var ComHandle: Thandle):integer;stdcall;
    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;
      

  3.   

    仁兄的这个函数是取com句柄的吗?我还是有点看不懂,前面我已经加载了动态库,这个函数出来后句柄怎么表示呢??
      

  4.   

    你能说清楚一点你的需求吗? 
                     你要传入的值
    BeginCom (ComNo, ComHandle);
      

  5.   

    我是要调用已经写好的库,要调用库首先要调用库里的Begincom(comNo:integer;var comHandle: Thandle)第一个参数是设备序号这个我知道,但第二个参数我就不知道该如何赋值了??
      

  6.   

    这个别人怎么知道,该问写DLL的人呀. 
      

  7.   

    function BeginCom(ComNo:integer;var ComHandle: Thandle):integer;stdcall;
    看好函数的定义var ComHandle: Thandle
    就是让你传递一个Thandle类型的变量进去好返回值,这个值不是你要赋的,而是调用函数返回的。