社区
Windows SDK/API
帖子详情
获取其他程序的DBGrid内容
yuhanhui
2009-12-22 10:29:21
怎么对其他程序的DBGrid的内容进行读取 以及传数据给DBgrid
...全文
585
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 XE通过句柄来
获取
其他
程序
控件中的
内容
,主要涉及的知识点包括:
程序
句柄、Delphi编程、FindWindowEx函数以及如何操作控件。 首先,我们需要理解什么是
程序
句柄(Handle)。在Windows...
跨进程
获取
DB
Grid
数据.rar
3. **数据传输**:当需要
获取
DB
Grid
数据时,主应用
程序
通过调用DLL接口,请求远程进程中
DB
Grid
的数据。DLL会通过内部实现的IPC机制与显示
DB
Grid
的进程进行通信,
获取
数据后返回给主进程。 4. **安全性和同步**:由于...
单击
db
grid
的title对数据进行排序
2. **
DB
Grid
**:这是一个组件,用于可视化显示数据集(如ADOQuery)中的数据,通常用于Windows应用
程序
中。
DB
Grid
的每一列对应数据集中的一个字段,而表头标题则是字段名。 实现步骤: 1. **添加控件**:在Form上...
DB
Grid
.rar_C Builder_
db
grid
DB
Grid
通常与TDataSource和TTable(或其他数据访问组件如TQuery或TADOQuery)一起使用,形成一个数据绑定结构。TDataSource连接到数据访问组件,而
DB
Grid
则通过TDataSource
获取
数据。在设计阶段,将TTable设置为所需...
db
grid
控件
数据源组件负责管理数据的
获取
和更新,而
DB
Grid
则负责显示这些数据。 2. 显示和编辑数据: 每个单元格代表数据库表中的一列,用户可以通过点击单元格来编辑数据。
DB
Grid
的列头通常显示字段名,可以通过设置Columns...
Windows SDK/API
1,183
社区成员
22,328
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章