找回密码
 加入
搜索
查看: 2430|回复: 2

[系统综合] 知道控件的句柄,用哪个函数获取控件的Name?

[复制链接]
发表于 2017-2-3 12:46:09 | 显示全部楼层 |阅读模式
帮助文件没找到,求助

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-2-3 18:29:54 | 显示全部楼层
ControlGetText ( "窗口标题", "窗口文本", 控件ID) 
控件ID 可以用控件句柄
为什么要获取文本?
 楼主| 发表于 2017-2-3 21:45:07 | 显示全部楼层
回复 2# Alam
#include <Array.au3>
#include <Constants.au3>
#include <WinAPI.au3>




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


;我的监控方案是:

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


;但是因为这个EXE不是我写的,我不知道源码,所以我不确定exe里面还有没别的控件,ID也是 [NAME:btEnter]
;所以为了验证,
;我借助  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[10][2] = [[0]]
        $avArr = $avTmp
    EndIf

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

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

    ReDim $avArr[$avArr[0][0]+1][2]
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 04:33 , Processed in 0.075763 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表