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

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

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

有这个一个需求,一个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_消息
详细如下:
75dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4S2@1M7X3g2E0k6i4k6T1N6r3q4D9K9#2)9J5k6h3y4G2L8g2)9J5c8Y4y4Z5L8%4N6@1K9s2u0W2j5h3c8Q4x3X3g2H3K9s2m8Q4x3@1k6@1i4K6y4p5x3K6R3J5y4K6j5`.
00eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4k6T1k6X3!0J5N6h3#2K6i4K6u0W2j5$3!0E0i4K6u0r3M7$3S2G2N6%4c8Z5M7X3g2S2k6q4)9J5k6i4m8Z5M7q4)9K6c8Y4c8Q4x3@1b7@1x3o6M7$3x3e0p5`.

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