本帖最后由 cashiba 于 2017-3-18 09:41 编辑 获取窗口的状态: WinGetState("标题"[, "文本"])
成功: 返回一个指示窗口状态的值. 使用 BitAND() 将多个状态值相加检查所需窗口的状态:
$WIN_STATE_EXISTS (1) = 窗口存在
$WIN_STATE_VISIBLE (2) = 窗口可见
$WIN_STATE_ENABLED (4) = 窗口激活
$WIN_STATE_ACTIVE (8) = 窗口处于活动状态
$WIN_STATE_MINIMIZED (16) = 窗口最小化
$WIN_STATE_MAXIMIZED (32) = 窗口最大化
失败: 返回 0, @error 设置为 1, 未找到目标窗口.
以前以为激活窗口是最顶端窗口,只有一个......
看到这个帖子 【Bitand 的作用是什么? http://www.autoitx.com/post.php? ... fid=4&tid=53449】 后,顺便检测了一下:#include <MsgBoxConstants.au3>
#include <Array.au3>
Example()
Func Example()
Local $aList = WinList()
$j=0
For $i = 1 To $aList[0][0]
If $aList[$i][0] <> "" And BitAND(WinGetState($aList[$i][1]),8) Then
$j=$j+1
EndIf
Next
MsgBox($MB_SYSTEMMODAL, "", "检测到的窗口数 = " & $j)
;_ArrayDisplay($aList, UBound($aList))
EndFunc
活动窗口,只有一个,就是scite编辑器窗口#include <MsgBoxConstants.au3>
#include <Array.au3>
Example()
Func Example()
Local $aList = WinList()
$j=0
For $i = 1 To $aList[0][0]
If $aList[$i][0] <> "" And BitAND(WinGetState($aList[$i][1]),4) Then
$j=$j+1
EndIf
Next
MsgBox($MB_SYSTEMMODAL, "", "检测到的窗口数 = " & $j)
;_ArrayDisplay($aList, UBound($aList))
EndFunc
这个检测到激活窗口,若干个.....
然后,检测顶层窗口:#include <WinAPI.au3>
Example()
Func Example()
Local $aWindows
$aWindows = _WinAPI_EnumWindowsTop()
MsgBox($MB_SYSTEMMODAL, "", "顶层窗口数 = " & $aWindows[0][0])
EndFunc
顶层窗口数也有若干....
求解惑:
1、上面的代码写法有木有问题?
2、若代码没有错误,那就是对激活窗口与活动窗口的概念搞反了?
3、Top窗口就是顶层窗口吧,如何获取最顶端的那个窗口的标题? |