首页
社区
课程
招聘
载取正在运行的(已编译好的)任意窗口中录入的数据...(部分现实,有问题待解决)
发表于: 2006-10-12 20:38 4504

载取正在运行的(已编译好的)任意窗口中录入的数据...(部分现实,有问题待解决)

2006-10-12 20:38
4504
如何载取正在运行的(已编译好的)任意窗口中录入的数据,并在该窗口上的保存事件之前保存数据到其它位置!(已有部分思路,还有问题,希望能解决)

有这个一个需求,一个VB做的软件,在数据录入窗口保存数据时直接写到远程服务器上,现在需要对保存事件进行载取,并在本地保存一份,窗口上的数据比较复杂,包括文本框,下拉框,还有ListBox!

已有方案并基本可以现实如下:
通过API载取该窗口的句柄,并得到该窗口中所有控件的值(文本属性),基本上可以现实,但是对于ListView,MSGrid等比较复杂的控件,无法得到内部的数据,不知道有没有其它办法?
通过Hook Mouse事件,在原窗口的保存按钮点击前,保存载取的数据,但这种方法基本可以现实,但有一个问题,一个的数据都是在保存过程进行检查校验的,这样,外部Hook的数据就可能是没有通过检查校验的数据.

由于上面的窗口中的控件多,且复杂,所有该方案很复杂,可靠性不是很高,并且对于较复杂的 ListView,MSGrid内容处理起来太复杂!

经过分析,该窗口上的数据录入控件是一个用VB做的OCX控件,数据录入后,通过该OCX的属性可以读取出来,所以产生如下思路?
能不过直接得到该OCX 控件的一个指针,通过其它方法,直接读取该OCX中的数据!这样的方法应该是最完美的,但不知道是否可行,怎么做?

向大家请教?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 164
活跃值: (53)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
try

mStrings.Clear;

vItemCount := SendMessage(mHandle, LB_GETCOUNT, 0, 0);

for I := 0 to vItemCount - 1 do begin

SetLength(S, SendMessage(mHandle, LB_GETTEXTLEN, I, 0));

SendMessage(mHandle, LB_GETTEXT, I, Integer(@S[1]));

mStrings.Add(S);

end;
2006-10-12 20:55
0
雪    币: 164
活跃值: (53)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
有关VB中ListView的内容截取已经有了结果
可下载示例(fpdedemo2-lv.zip )LVM_消息
详细如下:
http://www.xtremevbtalk.com/showthread.php?t=38276
http://www.vbforums.com/showthread.php?t=407611

不知道MSGrid的代码,能不能找到!
2006-10-18 15:27
0
游客
登录 | 注册 方可回帖
返回
//