社区
语言基础/算法/系统设计
帖子详情
提个难题,取另外一个程序DBGrid中的数据,这个DBGrid在一个BPL中不是在Exe文件中
踢踏
2006-06-18 01:25:18
如果DBGrid直接在可执行Exe中,那么比较好取数据,网上的分析和例子很多。
但是DBGrid在一个BPL中(或者在Dll中),由Exe调用BPL(Dll)里面的窗体后显示的DBGrid,各位有没有方法取得。
...全文
759
34
打赏
收藏
提个难题,取另外一个程序DBGrid中的数据,这个DBGrid在一个BPL中不是在Exe文件中
如果DBGrid直接在可执行Exe中,那么比较好取数据,网上的分析和例子很多。 但是DBGrid在一个BPL中(或者在Dll中),由Exe调用BPL(Dll)里面的窗体后显示的DBGrid,各位有没有方法取得。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
34 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
踢踏
2006-06-24
打赏
举报
回复
抱歉,那个被Hook的对象是不适合于向外散播。
如果需要这个文件http://lichengbin.iii-grp.com/Source/DBGrid.rar,我可以发给你。
tetsuya
2006-06-24
打赏
举报
回复
记录~
CACACACACA
2006-06-24
打赏
举报
回复
你给的链接打不开.
我取得了DBGrid,通过DataSource取DataSet中的数据没有问题.
踢踏
2006-06-24
打赏
举报
回复
那么你可以试着取DBGrid中的数据看看,是否成功。
-----------------------------------
1.对于Windows的Standard Controls,基本上大家应该是都会的:
GetWindowText,WM_GETTEXT可以获取EDIT的文本内容;
LB_GETTEXT可以获取LISTBOX列表项的文本内容;
CB_GETLBTEXT可以获取COMBOBOX下拉列表项的文本内容;
这里我就不多说了。
对于Windows的Common Controls,如LISTVIEW、TREEVIEW等,在本进程自身中获取的话可以直接用LVM_GETITEMTEXT,TVM_GETITEM消息,跨进程的话,还需要另外用到一些API函数,有兴趣的可以看看这个贴子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3224504
DBGrid是Delphi的自写控件,不是Windows控件,没有什么消息可以利用来获取它所显示的数据记录内容。
CACACACACA
2006-06-24
打赏
举报
回复
其实我很想看看,其它高手是怎么搞定的(感觉自己的方法还是比较简单的,取BCB6包中FORM上的DBGrid的内容,设置DBGrid的颜色,字体都成功了).
我用SendMessage(Hnwd, RM_GetObjectInstance, 0, 0))
踢踏
2006-06-23
打赏
举报
回复
已经发了,请查收。
王集鹄
2006-06-23
打赏
举报
回复
http://lichengbin.iii-grp.com/Source/DBGrid.rar下载不了
发一个给我也可以wjhu111@21cn.com,能调试先
踢踏
2006-06-23
打赏
举报
回复
四星级人物出动了,幸会,幸会
踢踏
2006-06-23
打赏
举报
回复
可参考这里的说明:
http://nishuixingzhou.blogchina.com/4853833.html
王集鹄
2006-06-23
打赏
举报
回复
看http://nishuixingzhou.blogchina.com/4853833.html中,先顶一下
王集鹄
2006-06-23
打赏
举报
回复
先告诉我取另外一个程序DBGrid中的数据怎么取?就是在Exe中的
CACACACACA
2006-06-23
打赏
举报
回复
对了, LZ把你的exe+bpl(dll)文件,给我一份. 我测试一下.
jjwandjy@yahoo.com.cn
CACACACACA
2006-06-23
打赏
举报
回复
up
踢踏
2006-06-23
打赏
举报
回复
自己顶一下
踢踏
2006-06-23
打赏
举报
回复
那就晕菜了。
我要取得数据程序的是用BCB5.0编的,我现在用的Delphi7。
另外,数据窗口并不是TDBGrid,而是TDBGridE。
从上面跟踪的结果来看,
hCtrl:13437334; -传入的Form.handle
OwningProcess:2488;
ControlAtomString:ControlOfs4000000000000F50;
GetProp:22953984;
GetProp OK;
pControl.Handle:22975524;-里面得到的Form.handle
这两个Handle值并不一致。
王集鹄
2006-06-23
打赏
举报
回复
首先确认pControl.Handle:22975524和你的窗体句柄一致
Delphi不同版本的类型大小并不一样
各种函数地址偏移也不一样,跨版本的读取又的琢磨琢磨了
踢踏
2006-06-23
打赏
举报
回复
你的方法确实很管用。用GetWindowLong(hCtrl, GWL_HINSTANCE) 代替 GetModuleHandle 函数解决了 参数问题。
起初取Dll中的DBgrid时,要用Dll文件名代替nil参数,取Bpl时,要用VCL50.bpl代替nil参数。
现在问题就很怪了,我用窗口 hCtrol=Form1.Handle 传入,可以取得窗口的实例,返回的Handle有值。
跟踪如下:
ProcessID:2488;
GetCurrentThreadID:3920;
hCtrl:13437334;
OwningProcess:2488;
ControlAtomString:ControlOfs4000000000000F50;
GetProp:22953984;
GetProp OK;
pControl.Handle:22975524;
ControlName:Form1;
我用hCtrol=DBGrid1.Handle传入,可以取得DBGrid1的实例,但Handle却为0,后续步骤不能操作
ProcessID:2488;
GetCurrentThreadID:3920;
hCtrl:1509762;
OwningProcess:2488;
ControlAtomString:ControlOfs4000000000000F50;
GetProp:22975928;
GetProp OK;
pControl.Handle:0;
ControlName:DBGrid1;
王集鹄
2006-06-23
打赏
举报
回复
根据hCtrl得到的信息更可靠一些,其他的读取方法类似
王集鹄
2006-06-23
打赏
举报
回复
// 获取目标进程中DBGrid的数据集的记录内容,保存到文件中
procedure ProcessDataSet(hCtrl: HWND);
//....
begin
ControlAtomString := Format('ControlOfs%.8X%.8X', [GetWindowLong(hCtrl, GWL_HINSTANCE), GetWindowThreadProcessId(hCtrl)]);
ControlAtom := GlobalAddAtom(PChar(ControlAtomString));
RM_GetObjectInstance := RegisterWindowMessage(PChar(ControlAtomString));
Grid := TDBGrid(FindControl(hCtrl)); // 根据句柄取得对象实例
//....
end;
//....
initialization
(*
ControlAtomString := Format('ControlOfs%.8X%.8X', [GetModuleHandle(nil), GetCurrentThreadID]);
ControlAtom := GlobalAddAtom(PChar(ControlAtomString));
RM_GetObjectInstance := RegisterWindowMessage(PChar(ControlAtomString));
*)
//....
end.
踢踏
2006-06-22
打赏
举报
回复
呵呵,发点内幕消息,参考参考
加载更多回复(14)
图书销售管理的小系统
本系统没有用到任何第三方控件,你只要安装了Delphi7,并且在把QuickReport(Bindclqrt70.
bpl
)添加进去就可以了.系统使用方法: 1.每次新书入库时,都要在信息初始化
中
进行登记,才可以到进书管理
中
进行入库操作. 2.刚开始...
Jd
Grid
源码控件包加例子
// AutoUpdate 属性的使用类似于
一个
与
Db
Grid
关联的 DataSource 控件, // 当 DataSource 内容改变时,需要把 DataSource 的 Enabled 属性置为 False。 // 以防止
Db
Grid
出现慢镜头式的现象。 // ***********...
最新Ehlib 5.0.13(含完整Delphi、C++builder源代码,完全支持delphi 2010正式版)
本人已在Delphi 2010
中
运行通过,在本人编制的进销存软件
中
应用完全正常。 注:Delphi2010里面安装不要修改
bpl
文件
的输出路径,采用默认值,否则安装难以成功。 Version 5.0的改进: + At design-time
grid
can ...
DELPHI 表格控件
DB
Grid
Eh史上最全使用资料(101页)
4) 如根据不同状态在
数据
单元格
中
显示相应图片...................................................5 5) 自动显示标题行的升降排序标志符(▽降序△升序)并做相应排序...............6 6) 点
db
grid
eh 标题排序.......
最新Ehlib 5.2.84(含完整源代码,支持delphi XE)
本人已在Delphi XE
中
运行通过,在本人编制的进销存软件
中
应用完全正常。 注:Delphi 2010、XE里面安装不要修改
bpl
文件
的输出路径,采用默认值,否则安装难以成功。 Version 5.2 + Added feature to group data ...
语言基础/算法/系统设计
16,748
社区成员
33,247
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章