外程序是VB的编写的,类名: ApexGrid.19
想通过delphi编写程序获取到ApexGrid.19中的行与列与相应的数据,在网上查资料说可以通过Hook实例化ApexGrid对应delphi的控件,但不知道ApexGrid对应delphi的什么控件,
搞了半天头都大了,请高手帮忙 

解决方案 »

  1.   


    function FindControl(Handle: HWnd): TWinControl;
    var
      OwningProcess: DWORD;
      ControlAtomString :string;
      ControlAtom :TAtom;
      RM_GetObjectInstance : dword;
    begin
      ControlAtomString := Format('ControlOfs%.8X%.8X', [HInstance, GetCurrentThreadID]);
      ControlAtom := GlobalAddAtom(PChar(ControlAtomString));
      RM_GetObjectInstance := RegisterWindowMessage(PChar(ControlAtomString));
      Result := nil;
      if (Handle <> 0) and (GetWindowThreadProcessID(Handle, OwningProcess) <> 0) and
         (OwningProcess = GetCurrentProcessId) then
      begin
        Result := Pointer(SendMessage(Handle, RM_GetObjectInstance, 0, 0));
      end;
    end;调用
    SG := Pointer(FindControl(P^.DestWnd));
    var SG: TDBGrid;
      

  2.   

    SG := Pointer(FindControl(P^.DestWnd)); 为什么 SG 返回的都是nil?