获取其他程序的DBGrid内容

yuhanhui 2009-12-22 10:29:21
怎么对其他程序的DBGrid的内容进行读取  以及传数据给DBgrid
...全文
518 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wztimes 2012-03-21
  • 打赏
  • 举报
回复
刚接触delphi, 下了, 不懂的用, 唉,
可有人帮弄个例子, 或者给个详细的步骤, 谢谢了
hhuayuan 2010-01-09
  • 打赏
  • 举报
回复
我也在找获取第三方程序DBGrid内容的资料,先下载看看
duduxia 2010-01-05
  • 打赏
  • 举报
回复
Mark.重点关注。好像可以偶以前的
获得其他进程TStringGrid文本一个内容嘛。
qinjs 2010-01-04
  • 打赏
  • 举报
回复
俺第一次用Delphhi写程序,有点菜,还真没了解过 ControlAtomString 或标记这些东西。
qinjs 2010-01-04
  • 打赏
  • 举报
回复
根据自己的猜测糊弄了一番,终于取到了正确的目标控件了。问题还是出在 ControlAtomString 上,基地址需要用目标控件所在的模块(即dll)实例句柄,即其中的HInstance要更改。

下面一段是某个文章的摘抄:
------------------------------------------------------------
分析RTL 源码发现,在Delphi 初始化每一个TWinControl 对象时,将会在窗体
的属性(PropData)中加入一些标志,其中的一个标志是用于存放该对象的内存地址
的。而FindControl 就是通过查看该属性来获取对象在内存中的起始地址。——即内
存实例地址。
这个“标志”,其固定形式为:
ControlAtomString := Format('ControlOfs%.8X%.8X',
[HInstance, GetCurrentThreadID]);
由于在DLL 中,HInstance 的值与HOST 进程的HInstance 并不一致,所以,在
DLL 中的ControlAtomString 也就与HOST 进程不一致。那么,通过B 标志去查A
标志的属性,自然什么也得不到了。
通过 Win32API GetWindowLong(),可以获得一个窗体所在的(真实的)实例句柄。
这样,可以在DLL 中重新构造针对于任何一个窗体句柄的ControlAtomString。
qinjs 2010-01-04
  • 打赏
  • 举报
回复
我是在lichengbin的 HookSG 基础上修改测试的
qinjs 2010-01-04
  • 打赏
  • 举报
回复
水哥,我只是用IE举例,我操作的另一个应用时Delphi的,出现了这个问题。
YFLK 2010-01-04
  • 打赏
  • 举报
回复
观注中,看来只能用注入代码的方式解决此类问题了!
Harryfin 2010-01-04
  • 打赏
  • 举报
回复
mark, 学习
无条件为你 2010-01-04
  • 打赏
  • 举报
回复
果然,在您的代码上稍做修改,DBGrid的内容进行读取已经实现。哈哈,爽!楼主的贴子帮我解决了多年困惑的难题。
王集鹄 2010-01-03
  • 打赏
  • 举报
回复
操作ie就用ie提供的接口,我提供的方法是访问vcl的。
qinjs 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zswang 的回复:]
跨进程访问VCL的一个用例(Delphi6、TurboDelphi测试通过)
[/Quote]

水哥,这个用例有个问题,是关于 FindControl 的:

假设被注入的程序 Delphi6Demo.exe 界面生成复杂,要获取的窗体不是 Delphi6Demo.exe 创建,而是 Delphi6Demo.exe 加载了另外的dll文件生成的(很多程序是这样,比如IE等),那么这个时候 FindControl 就取不到对象了。

这种情况可以用Spy++查看到,比如水哥的用例里,可以查看 Delphi6Demo.exe 窗体里的Form1和Edit1,属性检查器中的实例句柄都是一样的,我试过增加几层控件,比如中间增加几层TPanel,用FindControl 都可以取到想取的对象(比如DBgrid)。但如果像IE的,通过加载dll而生成的窗体,其实例句柄和首层窗体 IEFrame 的实例句柄是不一样的,这种情况下 FindControl 就取不到对象了。

这个问题我也还没有办法解决,还请水哥出手。

lyhoo163 2010-01-02
  • 打赏
  • 举报
回复
up
hjkto 2009-12-23
  • 打赏
  • 举报
回复
up
gyk120 2009-12-22
  • 打赏
  • 举报
回复
跨进程读取,应该是注入到目标进程
相关推荐
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2009-12-22 10:29
社区公告
暂无公告