Autoit 取值 问个题哈,怎么取那种值,就是鼠标放在某个控件上,然后显示出来的值
比如说你把鼠标放在360的系统托盘图标上,然后显示出来的值就是“360安全卫士-木马防火墙完全开启”;...
比如说你把鼠标放在360的系统托盘图标上,然后显示出来的值就是 “360安全卫士 - 木马防火墙完全开启”;
展开
1个回答
展开全部
这是 TrayTip,托盘提示。
TrayTip其实就是个特殊的窗口,窗口类为tooltips_class32,要取得 TrayTip 上的文本,用WinGetTitle函数也就可以了。
TrayTip的窗口Title其实就是你要的文本。
试试下面这个:
$Rt = _GetTrayTipText('360安全卫士..*', 1)
MsgBox(0, @error, $Rt)
Func _GetTrayTipText($Title, $REFlag = 0)
;提示:此函数来自于AutoIt中文论坛-Afan
;$Title - 需关闭提示窗口的“标题”
; (注意是非粗体字,相当于TrayTip设置的“文本”)
;$REFlag - [可选参数]是否使用正则,默认0=不使用
;返回值:返回“标题”字符串
; 未匹配到标题或标题为空返回 @Error
If $Title == '' Then Return SetError(1)
Local $aWL = WinList('[CLASS:tooltips_class32]')
Local $st, $msg, $IsIn = 0
For $i = 1 To $aWL[0][0]
$st = WinGetTitle($aWL[$i][1])
If $st = '' Then ContinueLoop
If Not $REFlag Then
If StringInStr($st, $Title) Then $IsIn = 1
ElseIf StringRegExp($st, $Title) Then
$IsIn = 1
EndIf
If $IsIn Then ExitLoop
Next
If Not $IsIn Then Return SetError(2)
Return $st
EndFunc ;==>_WinTooltipsClose
TrayTip其实就是个特殊的窗口,窗口类为tooltips_class32,要取得 TrayTip 上的文本,用WinGetTitle函数也就可以了。
TrayTip的窗口Title其实就是你要的文本。
试试下面这个:
$Rt = _GetTrayTipText('360安全卫士..*', 1)
MsgBox(0, @error, $Rt)
Func _GetTrayTipText($Title, $REFlag = 0)
;提示:此函数来自于AutoIt中文论坛-Afan
;$Title - 需关闭提示窗口的“标题”
; (注意是非粗体字,相当于TrayTip设置的“文本”)
;$REFlag - [可选参数]是否使用正则,默认0=不使用
;返回值:返回“标题”字符串
; 未匹配到标题或标题为空返回 @Error
If $Title == '' Then Return SetError(1)
Local $aWL = WinList('[CLASS:tooltips_class32]')
Local $st, $msg, $IsIn = 0
For $i = 1 To $aWL[0][0]
$st = WinGetTitle($aWL[$i][1])
If $st = '' Then ContinueLoop
If Not $REFlag Then
If StringInStr($st, $Title) Then $IsIn = 1
ElseIf StringRegExp($st, $Title) Then
$IsIn = 1
EndIf
If $IsIn Then ExitLoop
Next
If Not $IsIn Then Return SetError(2)
Return $st
EndFunc ;==>_WinTooltipsClose
更多追问追答
追问
我试了试,用WinList 出来显示有八十个,函数是取窗口个数,咋回有那么多,然后,我循环去取每一个的title都是空的,不知道咋回事?我的系统是win7 32 位的,能不能再帮帮忙!谢谢
追答
忘记说了,操作步骤是这样的:
先将鼠标指向360托盘图标,出来TrayTip后,再按F5执行脚本。
这样才能抓到TrayTip。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询