请教个问题,得到一个句柄HANDLE,如何msgbox这个句柄窗口的title?
如得到了$tjHandle,这个是一个窗口的句柄msgbox它的title名字?
第二个问题是,我得到了一个二维数组的变量,如何知道究竟有数组多少有效范围?
这个是上次afan大大出手的代码,我为了练手,改为Return $pidHandle,但我想把这个数组历遍式地逐个返回handle的tiitle,是不是含有“结果”这个字眼而做if判断,而不是指定的,应该怎么做呢?
;找到MIM进程PID
$list = ProcessList("tj.exe")
;输出MIM进程PID
;msgbox(0,"结果",$list)
;得到PID号
$PID = $list;
;得到PID的句柄
$tjHandle = _Pid2Handle($PID)
;msgbox(0,"显示句柄",$tjHandle)
;If $MIMHandle = true Then
; MsgBox(0, "示例", "有handle")
;Else
; MsgBox(0, "示例", "无handle")
;EndIf
WinKill($tjHandle,"")
Func _Pid2Handle($PID)
;Afan提示:通过进程pid返回包含其可见窗口标题和句柄的二维数组
Local $Whall, $i, $pidHandle = [], $x = 1
$Whall = WinList()
For $i = 1 To $Whall
If WinGetProcess($Whall[$i]) = $PID And BitAND(WinGetState($Whall[$i]), 2) Then
ReDim $pidHandle[$x + 1]
$pidHandle += 1
$pidHandle[$x] = $Whall[$i]
$pidHandle[$x] = $Whall[$i]
$x += 1
EndIf
Next
Return $pidHandle
EndFunc ;==>_Pid2Handle
Msgbox(0, 0, WinGetTitle($tjHandle))
第二个问题还没看懂 本帖最后由 sanfer8889 于 2010-7-2 16:11 编辑
我的理解是:
_Pid2Handle($PID)函数里的$pidHandle,是一个数组吧?
$PID应该是有多个窗口的进程,如何获得他们全部窗口的title呢?
而得到的tjHANDLE,应该如何获得完整的title列表呢?
Return $pidHandle是我手工对比出来的目标窗口,但有时候不存在,有时候又有,
所以打算拿到整个列表做个判断,再来靠title判断出目标窗口,发送点击等动作。。。
谢谢! ;找到MIM进程PID
$list = ProcessList("tj.exe")
;输出MIM进程PID
;msgbox(0,"结果",$list)
;得到PID号
$PID = $list;
;得到PID的标题与句柄的2维数组
$tj = _Pid2Handle($PID)
For $i = 1 to $tj
If StringInStr($tj[$i], '结果') Then Msgbox(0, '窗口句柄:' & $tj[$i], '窗口标题:' & $tj[$i] & @LF & '含有“结果”字样。')
Next
Func _Pid2Handle($PID)
;Afan提示:通过进程pid返回包含其可见窗口标题和句柄的二维数组
Local $Whall, $i, $pidHandle = [], $x = 1
$Whall = WinList()
For $i = 1 To $Whall
If WinGetProcess($Whall[$i]) = $PID And BitAND(WinGetState($Whall[$i]), 2) Then
ReDim $pidHandle[$x + 1]
$pidHandle += 1
$pidHandle[$x] = $Whall[$i]
$pidHandle[$x] = $Whall[$i]
$x += 1
EndIf
Next
Return $pidHandle
EndFunc ;==>_Pid2Handle
页:
[1]