找回密码
 加入
搜索
查看: 26460|回复: 39

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

 火... [复制链接]
发表于 2012-4-12 22:33:45 | 显示全部楼层 |阅读模式
最近在帮朋友操作一个软件客户端,操作过程很简单,按照客户端获取的服务器指定时间,进行一系列简单操作

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



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

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 -10 收起 理由
afan -10

查看全部评分

发表于 2012-4-12 22:59:07 | 显示全部楼层
本帖最后由 半芯竹 于 2012-4-12 23:06 编辑

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

只显示可见窗口的名字:[BY  大绯狼]
$var = WinList()
 
For $i = 1 to $var[0][0]
  ; 仅显示带标题的可见窗口
  If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    MsgBox(0, "详情", "标题=" & $var[$i][0] & @LF & "句柄=" & $var[$i][1])
  EndIf
Next
 
Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then 
    Return 1
  Else
    Return 0
  EndIf
 
EndFunc
 楼主| 发表于 2012-4-12 23:31:07 | 显示全部楼层
感谢楼上朋友的回答

上面的截图是软件客户端窗口的其中一个小区域,整个客户端窗口的句柄我能够通过WinGetHandle 获得,之前曾经尝试使用过WinGetText,但同样只能获取到Edit这种标准控件内的文本,这个显示时间区域的文本依然无法获得
发表于 2012-4-13 08:37:06 | 显示全部楼层
把文件发上来
发表于 2012-4-13 08:55:10 | 显示全部楼层
本帖最后由 xz00311 于 2012-4-13 09:07 编辑

这个问题我也想知道,一些非标准控件是很难获取到枚举不出来的很郁闷
可惜的是我这4个窗口都是的句柄类别名全部一样的点击的时候都不知道咋点击
发表于 2012-4-13 11:11:54 | 显示全部楼层
顶发哥,   有文件  会好弄些
 楼主| 发表于 2012-4-14 17:04:33 | 显示全部楼层
感谢楼上几位的回复,因为软件设计到一些机密信息,实在是不便发送到论坛上来

我目前虽然已经通过ocr识别分析出了框体内的文字内容,但总觉的这不应该是常规做法,所以还是想请教各位关于处理这类非常规控件(或者不是控件)中的文字信息的一些常规思路,谢谢
发表于 2012-4-14 17:11:13 | 显示全部楼层
回复 1# opq6789
去搜索 P 版的帖子, 有个直接读取激活的程序的特定位置的文字!
像这类Edit控件绝对能读出来!
我用过, 很好使!
当然要自己稍稍修改才会适用自己!
 楼主| 发表于 2012-4-14 17:27:27 | 显示全部楼层
感谢,我去翻翻帖子
 楼主| 发表于 2012-4-14 17:27:37 | 显示全部楼层
回复  opq6789
去搜索 P 版的帖子, 有个直接读取激活的程序的特定位置的文字!
像这类Edit控件绝对能读出 ...
user3000 发表于 2012-4-14 17:11



    感谢,我去翻翻帖子
 楼主| 发表于 2012-4-14 17:52:33 | 显示全部楼层
回复  opq6789
去搜索 P 版的帖子, 有个直接读取激活的程序的特定位置的文字!
像这类Edit控件绝对能读出 ...
user3000 发表于 2012-4-14 17:11



    请教这位朋友,你说的P版,指的是 pusofalse 吗? 我搜索了它所有的帖子,貌似没有找到你说的程序,如果方便的话,能麻烦你给个链接吗,谢谢
发表于 2012-4-14 18:19:09 | 显示全部楼层
本帖最后由 user3000 于 2012-4-14 18:21 编辑

回复 11# opq6789

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +5 收起 理由
pusofalse + 5 感谢厚爱~

查看全部评分

 楼主| 发表于 2012-4-14 18:37:04 | 显示全部楼层
回复  opq6789

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



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

   http://www.autoitx.com/forum.php ... p;extra=&page=1

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

   至于我希望获取的客户端中信息,由于服务器暂时关闭,无法进行测试,可能要等1-2周后才能进行测试,还是非常感谢你提供的信息,顺便感谢下P版
发表于 2012-4-24 13:54:25 | 显示全部楼层
使用 AutoIt Windows Info 工具无法探测出这个区域是何种类型的控
发表于 2012-4-24 13:55:56 | 显示全部楼层
我刚刚在winxp下测试过,可以截取指定$iPid 内的文字,的确非常强大,遗憾的是目前在win7系统下运行不正常,我回头自己研究一下
lbvu楼主,win7下可以用了吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-27 11:27 , Processed in 0.085044 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表