社区
Windows SDK/API
帖子详情
获取其他程序的DBGrid内容
yuhanhui
2009-12-22 10:29:21
怎么对其他程序的DBGrid的内容进行读取 以及传数据给DBgrid
...全文
518
16
打赏
收藏
获取其他程序的DBGrid内容
怎么对其他程序的DBGrid的内容进行读取 以及传数据给DBgrid
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
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
王集鹄
2009-12-22
打赏
举报
回复
跨进程访问VCL的一个用例(Delphi6、TurboDelphi测试通过)
gyk120
2009-12-22
打赏
举报
回复
跨进程读取,应该是注入到目标进程
相关推荐
自己写的一个
db
GRID
打印
程序
自己写的一个
db
GRID
打印
程序
,有几个BUG,请大虾门指点一二。如有对本
程序
中的部门
内容
作出修改的,请eMail给我一份。jacker1979@163.com
Hook或者API高手请进-跨进程
获取
其他
程序
的
DB
Grid
内容
(其它人做的
程序
)
Hook或者API高手请进-跨进程
获取
其他
程序
的
DB
Grid
内容
(其它人做的
程序
) Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiAPI/html/delphi_20061109101554271.html 假设有一个
程序
A是一个信息管理系统,它的界面上有一个
DB
Grid
;我想写一个
程序
B来取A
程序
界面上的
DB
Grid
...
DELPHI 跨进程
获取
其他
程序
的
DB
Grid
内容
一、思考与启发 1.对于Windows的Standard Controls,基本上大家应该是都会的: GetWindowText,WM_GETTEXT可以
获取
EDIT的文本
内容
; LB_GETTEXT可以
获取
LISTBOX列表项的文本
内容
; CB_GETLBTEXT可以
获取
COMBOBOX下拉列表项的文本
内容
; 这里我就不多说了。 对于Windows的Commo
跨进程
获取
其他
程序
的
DB
Grid
内容
关键词:钩子Hook, DLL注入, FindControl转自http://nishuixingzhou.bokee.com/4853833.html一、思考与启发 1.对于Windows的Standard Controls,基本上大家应该是都会的: GetWindowText,WM_GETTEXT可以
获取
EDIT的文本
内容
; LB_GETTEXT可以
获取
LISTBOX列表项的文本
内容
怎么来
获取
其他进程中
DB
Grid
的文本
内容
啊
怎么来
获取
其他进程中
DB
Grid
的文本
内容
啊,因为这个是非标准控件,试了很多办法。由于本人还比较菜,请救高手帮忙。本人QQ:9129961高手帮忙救一下,很急,兄弟请客吃饭。
发帖
Windows SDK/API
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
1177
社区成员
2.2w+
社区内容
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2009-12-22 10:29
社区公告
暂无公告