; Создаёт функцию обратного вызова
$handle = DllCallbackRegister("_EnumWindowsProc", "int", "hwnd;lparam")

; Вызывает EnumWindows
DllCall("user32.dll", "int", "EnumWindows", "ptr", DllCallbackGetPtr($handle), "lparam", 10)

; Удаляет функцию обратного вызова
DllCallbackFree($handle)

; Процедура функции обратного вызова
Func _EnumWindowsProc($hWnd, $lParam)
	; Если окно имеет заголовок и является видимым, то
	If WinGetTitle($hWnd) <> "" And BitAND(WinGetState($hWnd), 2) Then
		; Нажатие кнопки "Отмена" (2), возвращает 0, чтобы остановить перечисление
		If MsgBox(1, WinGetTitle($hWnd), _
			"$hWnd=" & $hWnd & @LF & _
			"lParam=" & $lParam & @LF & _
			"$hWnd(type)=" & VarGetType($hWnd)) = 2 Then Return 0
	EndIf
	Return 1 ; Возвращает 1, чтобы продолжить перечисление
EndFunc