怎样获取其他程序DrawGrid中的内容?

解决方案 »

  1.   

    跨进程访问VCL的一个用例(Delphi6、TurboDelphi测试通过)
      

  2.   

    DrawGrid只负责提供画布进行操作,它不会保存任何需要显示的文字内容,你想要获取它的内容,不如直接向图像识别考虑
      

  3.   

    hook 可以 我想获得这个画布中的所有字符串 
      

  4.   


    水哥,这个用例有个问题,是关于 FindControl 的: 假设被注入的程序 Delphi6Demo.exe 界面生成复杂,要获取的窗体不是 Delphi6Demo.exe 创建,而是 Delphi6Demo.exe 加载了另外的dll文件生成的(很多程序是这样,比如IE等),那么这个时候 FindControl 就取不到对象了。 这种情况可以用Spy++查看到,比如水哥的用例里,可以查看 Delphi6Demo.exe 窗体里的Form1和Edit1,属性检查器中的实例句柄都是一样的,我试过增加几层控件,比如中间增加几层TPanel,用FindControl 都可以取到想取的对象(比如DBgrid)。但如果像IE的,通过加载dll而生成的窗体,其实例句柄和首层窗体 IEFrame 的实例句柄是不一样的,这种情况下 FindControl 就取不到对象了。 这个问题我也还没有办法解决,还请水哥出手。