找回密码
 加入
搜索
查看: 16722|回复: 38

[GUI管理] [已解决] 怎么获得lable标签控件上的字啊?

  [复制链接]
发表于 2008-9-10 11:23:25 | 显示全部楼层 |阅读模式
本帖最后由 kob5891 于 2010-6-14 11:53 编辑

用au3窗口信息工具根本得不到 控件ID
用guictrlread所提供的类型中也没有标签控件

怎样才能获得lable标签控件上的字符?各位大哥帮忙呀,这个问题困惑我好几天了。


附件是用VB6.0做的一个 “label=程序 和 commandbutton=确定”   两个控件



版主能否给个实例,讲解一下。

我对画面的处理及文字识别没有做过。

有些软件只能抓到窗口,其它什么也抓不到。对这些软件用图象处理加文字识别可能会更好些。

麻烦版主了。



是屏幕取词  OK

[ 本帖最后由 kob5891 于 2008-10-21 10:03 编辑 ]

本帖子中包含更多资源

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

×
发表于 2008-9-10 11:54:31 | 显示全部楼层
获取自己本身的控件,用GUICtrlRead()函数。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 363, 183, 193, 125)
$Label1 = GUICtrlCreateLabel("我不是Label控件吗?", 80, 16, 190, 28)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$Button1 = GUICtrlCreateButton("获取", 112, 120, 121, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        MsgBox(0,"",GUICtrlRead($Label1))
        EndSwitch
WEnd
 楼主| 发表于 2008-9-10 11:57:57 | 显示全部楼层
谢谢2楼的兄弟
你说的是已经知道控件ID的 “$Label1”

我的意思是说 得到第三方软件上的lable
发表于 2008-9-10 12:03:09 | 显示全部楼层
关于第三方的“Label”,你应该用au3的窗口信息工具去确定其是否是Label,如果信息工具都没法获取其文本的话,就比较难了。
获取第三方文本的函数并不是GUI开头的,这个你要明白,第三方窗口控制应该是“窗口控制函数”,如:ControlGetText ()

[ 本帖最后由 顽固不化 于 2008-9-10 12:05 编辑 ]
发表于 2008-9-10 12:28:14 | 显示全部楼层
会被认为是static,可以用ControlGetText。
 楼主| 发表于 2008-9-10 14:42:09 | 显示全部楼层
我用VB做了个lable
ControlGetText("程序","确定") 提示错误ERROR: ControlGetText() [built-in] called with wrong number of args.

仿照控件ID的写法加上后边的 ControlGetText("程序","确定","ThunderRT6Label1") 还是不行,又改了改ThunderRT6LabelBox等等,还是没有得到label中文本。

还有没有别的办法可以获取
发表于 2008-9-10 15:33:56 | 显示全部楼层
原帖由 kob5891 于 2008-9-10 14:42 发表
我用VB做了个lable
ControlGetText("程序","确定") 提示错误ERROR: ControlGetText()  called with wrong number of args.

仿照控件ID的写法加上后边的 ControlGetText("程序","确定","ThunderRT6Label1") 还是不 ...


这不是你怎样改控件名称的问题,名称用信息工具获取的最正确。你发上来VB的EXE我们看看,怎么看名称与迅雷有关哦。
发表于 2008-9-10 15:48:06 | 显示全部楼层
例子:
run("驱逐舰升级工具2.5.exe")
WinWaitActive("驱逐舰升级工具2008")
MsgBox(0,"","最下行label的文本是:"&ControlGetText("驱逐舰升级工具","","Static2"))


本帖子中包含更多资源

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

×
 楼主| 发表于 2008-9-10 15:56:51 | 显示全部楼层

回复 8# 顽固不化 的帖子

If WinWaitActive("Form1") Then
        $label=ControlGetText("Form1","确定","Static1") ;Static2也试过了,不行。
        MsgBox(0,"",$label)
EndIf
Exit

msgbox中应该是“程序”,可结果是什么也没有。
发表于 2008-9-10 16:11:22 | 显示全部楼层
看了,可能VB编程中的LABEL被特殊处理了。没法显示“程序”是一个控件。
 楼主| 发表于 2008-9-10 16:33:12 | 显示全部楼层

回复 10# 顽固不化 的帖子

那有别的什么办法吗
发表于 2008-9-10 22:07:48 | 显示全部楼层
例子:
ControlGetText("窗口标题","","Static1")
不是所有lable都是能够获取的。
发表于 2008-9-10 22:16:28 | 显示全部楼层
如果lable是直接以点阵形式打印到窗口上的话,那是很难获取的,只能考屏幕取词或跟踪GDI+调用--都太难了
发表于 2008-9-16 11:41:34 | 显示全部楼层
抓id应该可以吧
发表于 2008-9-16 16:26:35 | 显示全部楼层
看了一下,确实捕捉不到,唯一的方法,截取当前窗口的画面,调用外部文字识别程序识别
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 13:02 , Processed in 0.081854 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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