ZSwang,你好,昨天下载了你的一个程序《跨进程访问VCL》,仔细研究了一下,获益匪浅,在此谢谢了。另外请教你一下,如果我需要hook外部程序中的一个第三方的控件,这个控件不是象label之类delphi自带的,那应该怎么改写程序?比如说这句:SameText(vWinControl.Components[I].ClassName, 'TLabel'),因为这个Component的ClassName是 'TLabel',所以程序能通过,如果我想hook的是一个第三方的控件,比如说dxtreelist,而这个dxtreelist并没有安装在我的delphi中,所以编译时肯定通不过的。您有办法解决这个问题嘛?还请多多指教!我只有这最后的10分了,以后等分数凑多了再赠送!

解决方案 »

  1.   

    那就装一个同版本的第三方控件。另外就是通过RTTI控制(声明在published部分的属性和方法可以通过name控制)。uses TypInfo;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(GetStrProp(Self, 'Caption'));
    end;
      

  2.   

    SameText(vWinControl.Components[I].ClassName, 'TLabel'),因为这个Component的ClassName是 'TLabel',所以程序能通过,如果我想hook的是一个第三方的控件,比如说dxtreelist,而这个dxtreelist并没有安装在我的delphi中,所以编译时肯定通不过的
    ------------------------------
    这句和你装没装控件没关系吧, 都可以编译过去的
      

  3.   

    如果有些类名是delphi所没有的,你确定能编译通过?昨天我想了很多办法,甚至用了一个类似的控件改名注册成目标控件的类名,编译能通过,但是运行时却引发了系统的故障,电脑都差点死机了,汗
      

  4.   

    请教一下zswang,你说的这个RTTI控制和那段代码,可以在不安装那个控件的情况下获取控件的内容嘛?