社区
Windows SDK/API
帖子详情
获取其他程序的DBGrid内容
yuhanhui
2009-12-22 10:29:21
怎么对其他程序的DBGrid的内容进行读取 以及传数据给DBgrid
...全文
550
16
打赏
收藏
获取其他程序的DBGrid内容
怎么对其他程序的DBGrid的内容进行读取 以及传数据给DBgrid
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
跨进程读取,应该是注入到目标进程
C++Builder精彩编程实例集锦的源代码前3部分.rar
实例069 如何
获取
程序
命令行参数 实例070 如何析取动态链接库中的图标 实例071 如何设置Edit组件的文本选择范围 实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何...
C++Builder精彩编程实例集锦的源代码后3部分.rar
实例069 如何
获取
程序
命令行参数 实例070 如何析取动态链接库中的图标 实例071 如何设置Edit组件的文本选择范围 实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何...
第一部分 界面设计
实例069 如何
获取
程序
命令行参数 实例070 如何析取动态链接库中的图标 实例071 如何设置Edit组件的文本选择范围 实例072 如何将小写金额转换成大写金额 实例073 如何将全角字符串转换成半角字符串 实例074 如何...
C++Builder精彩编程实例集锦的源代码(4,5,6部分).rar
C++Builder精彩编程实例集锦的源代码(4,5,6部分): 第四部分 图像处理 实例124 如何浏览图像 实例125 如何滚动浏览大图像 实例126 如何拖动图像 实例127 如何动态显示图像 ...实例250 如何
获取
数据库驱动
程序
名称
《Delphi7编程100例》代码
ToolBar工具栏控件的使用动态建立主菜单选项窗口界面的动态分隔条动态设置...
程序
使用Draw
Grid
控件制作五子棋多彩的数据报表按压缩比将BMP转换为JPG16位真彩转换到256色调整图片的RGB对比度实现图像的灰度级处理效果3种...
Windows SDK/API
1,183
社区成员
22,335
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章