sanfer8889 发表于 2010-7-2 15:57:48

请教个问题,得到一个句柄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

afan 发表于 2010-7-2 16:04:22

Msgbox(0, 0, WinGetTitle($tjHandle))
第二个问题还没看懂

sanfer8889 发表于 2010-7-2 16:07:23

本帖最后由 sanfer8889 于 2010-7-2 16:11 编辑

我的理解是:
_Pid2Handle($PID)函数里的$pidHandle,是一个数组吧?
$PID应该是有多个窗口的进程,如何获得他们全部窗口的title呢?
而得到的tjHANDLE,应该如何获得完整的title列表呢?
Return $pidHandle是我手工对比出来的目标窗口,但有时候不存在,有时候又有,
所以打算拿到整个列表做个判断,再来靠title判断出目标窗口,发送点击等动作。。。
谢谢!

afan 发表于 2010-7-2 16:21:37

;找到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]
查看完整版本: 请教个问题,得到一个句柄HANDLE,如何msgbox这个句柄窗口的title?