本帖最后由 tubaba 于 2016-12-13 12:44 编辑
從 include 文件来看,应该是解释有误,或者是翻译错误,此hwnd如果=_WinAPI_GetDesktopWindow(),那么
函數相當於_WinAPI_EnumWindows(),即
#include <WinAPISys.au3>
#include <Array.au3>
#include <WinAPI.au3>
local $srr=_WinAPI_EnumChildWindows(_WinAPI_GetDesktopWindow())
if @error then
msgbox(4096,"提示","发生错误",3)
;exit
EndIf
_ArrayDisplay($Srr)
;以上运行后无反应无结果。
;以下运行后有正常结果。
Local $srr = _WinAPI_EnumWindows()
_ArrayDisplay($Srr)
或者
Func _WinAPI_EnumChildWindows($hWnd, $bVisible = True)
if $hWnd=0 then $hWnd=_WinAPI_GetDesktopWindow();在原函數加上這一行
If Not _WinAPI_GetWindow($hWnd, 5) Then Return SetError(2, 0, 0) ; $GW_CHILD
Local $hEnumProc = DllCallbackRegister('__EnumWindowsProc', 'bool', 'hwnd;lparam')
Dim $__g_vEnum[101][2] = [[0]]
DllCall('user32.dll', 'bool', 'EnumChildWindows', 'hwnd', $hWnd, 'ptr', DllCallbackGetPtr($hEnumProc), 'lparam', $bVisible)
If @error Or Not $__g_vEnum[0][0] Then
$__g_vEnum = @error + 10
EndIf
DllCallbackFree($hEnumProc)
If $__g_vEnum Then Return SetError($__g_vEnum, 0, 0)
__Inc($__g_vEnum, -1)
Return $__g_vEnum
EndFunc ;==>_WinAPI_EnumChildWindows
|