社区
Windows SDK/API
帖子详情
获取其他程序的DBGrid内容
yuhanhui
2009-12-22 10:29:21
怎么对其他程序的DBGrid的内容进行读取 以及传数据给DBgrid
...全文
586
16
打赏
收藏
获取其他程序的DBGrid内容
怎么对其他程序的DBGrid的内容进行读取 以及传数据给DBgrid
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
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
王集鹄
2009-12-22
打赏
举报
回复
跨进程访问VCL的一个用例(Delphi6、TurboDelphi测试通过)
gyk120
2009-12-22
打赏
举报
回复
跨进程读取,应该是注入到目标进程
Delphi XE通过句柄
获取
其他
程序
控件中的
内容
Delphi
程序
,
获取
其他
程序
窗口的句柄,并将取得句柄相对的
内容
。 1父窗口类名 2父窗口标题 3逐次用FindWindowEx函数求出各级子窗口 4
获取
数据
跨进程
获取
DB
Grid
数据.rar
跨进程
获取
DB
Grid
数据
单击
db
grid
的title对数据进行排序
单击
db
grid
的title对数据进行排序.doc 单击
db
grid
的title对数据进行排序.doc
DB
Grid
.rar_C Builder_
db
grid
c++ builder 中
DB
GRID
加入鼠标滚动
db
grid
控件
db
grid
控件,欢迎使用>
Windows SDK/API
1,183
社区成员
22,328
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章