siton 发表于 2014-6-17 15:16:38

怎么得到任何一个窗口所有的控件(子窗口)的句柄(已解决)

本帖最后由 siton 于 2014-6-17 18:59 编辑

怎么得到一个窗口所有的控件的句柄,如题。

像按键精灵里,有这个功能的插件,

刚接触AUTOIT,,求解。

siton 发表于 2014-6-17 16:14:51

没人回吗。
高手来哦。

f4李文杨 发表于 2014-6-17 16:49:48

兄弟!只能获取窗口或控件单句柄!不能一口气全部获取!你可以获取一个一个的然后合并一起!就可以答到你的效果了!

502762378 发表于 2014-6-17 17:44:51

试试这样?

#include <WinAPI.au3>
#include <Array.au3>
Opt('MustDeclareVars', 1)

_Main()

Func _Main()
        Local $aWindows,$aWindowss ,$i, $n,$pid
        $aWindows = _WinAPI_EnumWindowsTop()
        For $i = 1 To $aWindows
                        Local $avArray
                        $pid = WinGetProcess($aWindows[$i])
                        $aWindowss = _WinAPI_EnumWindows()
                        For $n = 1 To $aWindowss
                                If WinGetProcess($aWindowss[$n]) = $pid Then
                                        _ArrayAdd($avArray, $aWindowss[$n])
                                EndIf                               
                        Next
                        _ArrayDisplay($avArray, "PID:"&WinGetProcess($aWindows[$i]))
        Next
EndFunc   ;==>_Main

siton 发表于 2014-6-17 18:56:12

楼上高手正解。感谢。

我在论坛上搜索到了另一种,也是可以。
#Include <Array.au3>
#include <Process.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global $Processid = ProcessList("要获取的窗口程序.exe")
Global $aWindows,$i
$aWindows = _WinAPI_EnumProcessWindows($Processid, FALSE)
Global $i = $aWindows
Global $aWindows2,$i2
$aWindows2 = _WinAPI_EnumChildWindows ($i, FALSE)

_ArrayDisplay($aWindows2, '枚举指定窗口子句柄')

siton 发表于 2014-6-17 19:01:20

_WinAPI_EnumChildWindows关键函数

zps26 发表于 2016-4-6 10:18:10

本帖最后由 zps26 于 2016-4-9 15:09 编辑

回复 5# siton

怎么得到任何一个窗口所有的控件(子窗口)的句柄(已解决)
页: [1]
查看完整版本: 怎么得到任何一个窗口所有的控件(子窗口)的句柄(已解决)