opq6789 发表于 2012-4-12 22:33:45

请教如何从窗口内的非控件区域获取文本信息

最近在帮朋友操作一个软件客户端,操作过程很简单,按照客户端获取的服务器指定时间,进行一系列简单操作

后面的一系列简单操作可以很轻松的使用au3来完成,但难题出在了如何使用au3获取客户端实时显示的服务器时间



服务器时间动态的显示在软件界面的一个如上图的区域内,基本上每秒刷新一次,使用 AutoIt Windows Info 工具无法探测出这个区域是何种类型的控件,Windows Info 工具只能识别出这个客户端界面其它几个标准的Edit控件

我在想这个显示时间的区域是不是根本就不是控件,而是软件开发者直接绘制出来的,只是通过函数实时更新区域里面的时间内容而已。。。{:face (229):}

想请教各位高手,这种情况下改如何获取这个区域里面的文本信息呢,万分感激

半芯竹 发表于 2012-4-12 22:59:07

本帖最后由 半芯竹 于 2012-4-12 23:06 编辑

可以尝试枚举当前所有窗口。如获取到此窗口句柄,再WinGetText试下
获取所有窗口信息包括隐含的:
Opt('WinSearchChildren', 1)
Opt('WinTitleMatchMode', 2)
Dim $a
$l = WinList()
For $i = 1 To $l
      $a &= '窗口名称:'&$l[$i]&'   窗口句柄:'&$l[$i]& @CRLF
Next
MsgBox(0,'',$a)

只显示可见窗口的名字:
$var = WinList()

For $i = 1 to $var
; 仅显示带标题的可见窗口
If $var[$i] <> "" AND IsVisible($var[$i]) Then
    MsgBox(0, "详情", "标题=" & $var[$i] & @LF & "句柄=" & $var[$i])
EndIf
Next

Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
Else
    Return 0
EndIf

EndFunc

opq6789 发表于 2012-4-12 23:31:07

感谢楼上朋友的回答

上面的截图是软件客户端窗口的其中一个小区域,整个客户端窗口的句柄我能够通过WinGetHandle 获得,之前曾经尝试使用过WinGetText,但同样只能获取到Edit这种标准控件内的文本,这个显示时间区域的文本依然无法获得

haijie1223 发表于 2012-4-13 08:37:06

把文件发上来

xz00311 发表于 2012-4-13 08:55:10

本帖最后由 xz00311 于 2012-4-13 09:07 编辑

这个问题我也想知道,一些非标准控件是很难获取到枚举不出来的很郁闷
可惜的是我这4个窗口都是的句柄类别名全部一样的点击的时候都不知道咋点击

魔导 发表于 2012-4-13 11:11:54

顶发哥,   有文件会好弄些{:1_536:}

opq6789 发表于 2012-4-14 17:04:33

感谢楼上几位的回复,因为软件设计到一些机密信息,实在是不便发送到论坛上来

我目前虽然已经通过ocr识别分析出了框体内的文字内容,但总觉的这不应该是常规做法,所以还是想请教各位关于处理这类非常规控件(或者不是控件)中的文字信息的一些常规思路,谢谢

user3000 发表于 2012-4-14 17:11:13

回复 1# opq6789
去搜索 P 版的帖子, 有个直接读取激活的程序的特定位置的文字!
像这类Edit控件绝对能读出来!
我用过, 很好使!
当然要自己稍稍修改才会适用自己!

opq6789 发表于 2012-4-14 17:27:27

感谢,我去翻翻帖子

opq6789 发表于 2012-4-14 17:27:37

回复opq6789
去搜索 P 版的帖子, 有个直接读取激活的程序的特定位置的文字!
像这类Edit控件绝对能读出 ...
user3000 发表于 2012-4-14 17:11 http://www.autoitx.com/images/common/back.gif


    感谢,我去翻翻帖子

opq6789 发表于 2012-4-14 17:52:33

回复opq6789
去搜索 P 版的帖子, 有个直接读取激活的程序的特定位置的文字!
像这类Edit控件绝对能读出 ...
user3000 发表于 2012-4-14 17:11 http://www.autoitx.com/images/common/back.gif


    请教这位朋友,你说的P版,指的是 pusofalse 吗? 我搜索了它所有的帖子,貌似没有找到你说的程序,如果方便的话,能麻烦你给个链接吗,谢谢

user3000 发表于 2012-4-14 18:19:09

本帖最后由 user3000 于 2012-4-14 18:21 编辑

回复 11# opq6789

本论坛暂时没发现第二位P版!
P版的帖子比较多, 不好找. 我也懒得找了, 直接上传相关文件给你!
示例代码是按F3时, 获取SciTE编辑器鼠标位置的文字.
请自行依据自己的需要和使用情况修改即可.
别忘了感谢P版对AU3作出的重大贡献. 有空可以多多观摩他的帖子!
**** Hidden Message *****

opq6789 发表于 2012-4-14 18:37:04

回复opq6789

本论坛暂时没发现第二位P版!
P版的帖子比较多, 不好找. 我也懒得找了, 直接上传相关文件 ...
user3000 发表于 2012-4-14 18:19 http://www.autoitx.com/images/common/back.gif


    感谢楼上的朋友,就在几分钟前我刚刚找到了P版这个程序的原始帖子,不是在他自己的帖子里面,是在回复其它朋友的帖子时发出来的,呵呵

   http://www.autoitx.com/forum.php?mod=viewthread&tid=17726&extra=&page=1

    我刚刚在winxp下测试过,可以截取指定$iPid 内的文字,的确非常强大,遗憾的是目前在win7系统下运行不正常,我回头自己研究一下

   至于我希望获取的客户端中信息,由于服务器暂时关闭,无法进行测试,可能要等1-2周后才能进行测试,还是非常感谢你提供的信息,顺便感谢下P版

yufei8051 发表于 2012-4-24 13:54:25

使用 AutoIt Windows Info 工具无法探测出这个区域是何种类型的控

yufei8051 发表于 2012-4-24 13:55:56

我刚刚在winxp下测试过,可以截取指定$iPid 内的文字,的确非常强大,遗憾的是目前在win7系统下运行不正常,我回头自己研究一下
lbvu楼主,win7下可以用了吗?
页: [1] 2 3
查看完整版本: 请教如何从窗口内的非控件区域获取文本信息