fenhanxue 发表于 2017-2-3 12:46:09

知道控件的句柄,用哪个函数获取控件的Name?

帮助文件没找到,求助

Alam 发表于 2017-2-3 18:29:54

ControlGetText ( "窗口标题", "窗口文本", 控件ID)
控件ID 可以用控件句柄
为什么要获取文本?

fenhanxue 发表于 2017-2-3 21:45:07

回复 2# Alam #include <Array.au3>
#include <Constants.au3>
#include <WinAPI.au3>




;额,这个解释起来是一个非常漫长的工程。。。可以概括为:
;有一个EXE程序,我要监控其中的一个控件,这个控件,只有NAME是不变的,所以我采用的方案是:
;控件ID
$id = ''


;我的监控方案是:

While 1
        If ControlCommand($title,'',$id,"IsVisible", "") Then
                ControlClick($title,'',$id)
        EndIf
        Sleep(100)
WEnd


;但是因为这个EXE不是我写的,我不知道源码,所以我不确定exe里面还有没别的控件,ID也是
;所以为了验证,
;我借助WinListChildren()可以枚举得到所有控件的句柄,然后我想用这些得到的句柄,去再得到对应的NAME,用来判断整个exe里面,有没重复的NAME
;关于这个函数的用法,见:
;   http://autoitx.com/forum.php?mod=viewthread&tid=32018&highlight=%BF%D8%BC%FE%2B%C1%D0%B1%ED





Func WinListChildren($hWnd, ByRef $avArr)
    If UBound($avArr, 0) <> 2 Then
      Local $avTmp = []
      $avArr = $avTmp
    EndIf

    Local $hChild = _WinAPI_GetWindow($hWnd, $GW_CHILD)

    While $hChild
      If $avArr+1 > UBound($avArr, 1)-1 Then ReDim $avArr[$avArr+10]
      $avArr[$avArr+1] = $hChild
      $avArr[$avArr+1] = _WinAPI_GetWindowText($hChild)
      $avArr += 1
      WinListChildren($hChild, $avArr)
      $hChild = _WinAPI_GetWindow($hChild, $GW_HWNDNEXT)
    WEnd

    ReDim $avArr[$avArr+1]
EndFunc
页: [1]
查看完整版本: 知道控件的句柄,用哪个函数获取控件的Name?