[已解决] 怎么获得lable标签控件上的字啊?
本帖最后由 kob5891 于 2010-6-14 11:53 编辑用au3窗口信息工具根本得不到 控件ID
用guictrlread所提供的类型中也没有标签控件
怎样才能获得lable标签控件上的字符?各位大哥帮忙呀,这个问题困惑我好几天了。
附件是用VB6.0做的一个 “label=程序 和 commandbutton=确定” 两个控件
版主能否给个实例,讲解一下。
我对画面的处理及文字识别没有做过。
有些软件只能抓到窗口,其它什么也抓不到。对这些软件用图象处理加文字识别可能会更好些。
麻烦版主了。
是屏幕取词OK
[ 本帖最后由 kob5891 于 2008-10-21 10:03 编辑 ] 获取自己本身的控件,用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 谢谢2楼的兄弟
你说的是已经知道控件ID的 “$Label1”
我的意思是说 得到第三方软件上的lable 关于第三方的“Label”,你应该用au3的窗口信息工具去确定其是否是Label,如果信息工具都没法获取其文本的话,就比较难了。
获取第三方文本的函数并不是GUI开头的,这个你要明白,第三方窗口控制应该是“窗口控制函数”,如:ControlGetText ()
[ 本帖最后由 顽固不化 于 2008-9-10 12:05 编辑 ] 会被认为是static,可以用ControlGetText。 我用VB做了个lable
ControlGetText("程序","确定") 提示错误ERROR: ControlGetText() called with wrong number of args.
仿照控件ID的写法加上后边的 ControlGetText("程序","确定","ThunderRT6Label1") 还是不行,又改了改ThunderRT6LabelBox等等,还是没有得到label中文本。
还有没有别的办法可以获取 原帖由 kob5891 于 2008-9-10 14:42 发表 http://www.autoitx.com/images/common/back.gif
我用VB做了个lable
ControlGetText("程序","确定") 提示错误ERROR: ControlGetText()called with wrong number of args.
仿照控件ID的写法加上后边的 ControlGetText("程序","确定","ThunderRT6Label1") 还是不 ...
这不是你怎样改控件名称的问题,名称用信息工具获取的最正确。你发上来VB的EXE我们看看,怎么看名称与迅雷有关哦。 例子:
run("驱逐舰升级工具2.5.exe")
WinWaitActive("驱逐舰升级工具2008")
MsgBox(0,"","最下行label的文本是:"&ControlGetText("驱逐舰升级工具","","Static2"))
回复 8# 顽固不化 的帖子
If WinWaitActive("Form1") Then$label=ControlGetText("Form1","确定","Static1") ;Static2也试过了,不行。
MsgBox(0,"",$label)
EndIf
Exit
msgbox中应该是“程序”,可结果是什么也没有。 看了,可能VB编程中的LABEL被特殊处理了。没法显示“程序”是一个控件。
回复 10# 顽固不化 的帖子
那有别的什么办法吗 例子:ControlGetText("窗口标题","","Static1")
不是所有lable都是能够获取的。 如果lable是直接以点阵形式打印到窗口上的话,那是很难获取的,只能考屏幕取词或跟踪GDI+调用--都太难了 抓id应该可以吧 看了一下,确实捕捉不到,唯一的方法,截取当前窗口的画面,调用外部文字识别程序识别