Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Перебор контролов
Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата w3d1:
как выдернуть из контрола Instance »
ещё вариант перебора дочерних окон с использованием CallBack:
Код: Выделить весь код
#include <WINAPI.au3>
#include <array.au3>

_EnumWindowsChildClass(WinGetHandle(""), "Scintilla")
_ArrayDisplay($a_EnumWindows)

Func _EnumWindowsChildClass($hWnd, $sClassName = "")
    Global $a_EnumWindows[1][5] = [["Class","NN","hWnd","ID","Text"]]

    Local $hCallBack  = DLLCallbackRegister("__EnumWindowsChildClassProc", "int", "hwnd;lparam")
    Local $tClassName = DllStructCreate("hwnd hWndMain;char ClassName[255]")
    Local $pClassName = DllStructGetPtr ($tClassName)
    Local $pCallBack  = DllCallbackGetPtr($hCallBack)

    DllStructSetData($tClassName, "hWndMain", $hWnd)
    DllStructSetData($tClassName, "ClassName", $sClassName)
    DllCall("user32.dll", "int", "EnumChildWindows", "hwnd", $hWnd, "ptr", $pCallBack, "lparam", $pClassName)
    DllCallbackFree($hCallBack)
EndFunc

Func __EnumWindowsChildClassProc($hWnd, $lParam)
    Local $tClassName = DllStructCreate("hwnd hWndMain;char ClassName[255]", $lParam)
    Local $sClassName = DllStructGetData($tClassName, "ClassName")
    Local $hWndMain   = DllStructGetData($tClassName, "hWndMain")
    Local $iUB = UBound($a_EnumWindows, 1), $iNN = 1

    If _WinAPI_IsClassName($hWnd, $sClassName) Then
        ReDim $a_EnumWindows[$iUB+1][5]
        $a_EnumWindows[$iUB][0] = _WinAPI_GetClassName($hWnd)
        If $iUB>1 And $a_EnumWindows[$iUB][0]=$a_EnumWindows[$iUB-1][0] Then $iNN=$a_EnumWindows[$iUB-1][1]+1

        $a_EnumWindows[$iUB][1] = $iNN
        $a_EnumWindows[$iUB][2] = $hWnd
        $a_EnumWindows[$iUB][3] = Number(_WinAPI_GetDlgCtrlID($hWnd))
        $a_EnumWindows[$iUB][4] = ControlGetText($hWndMain,"","[ID:"& $a_EnumWindows[$iNN][3] &"]")
    EndIf
    Return 1
EndFunc

Отправлено: 12:35, 04-09-2009 | #9

Название темы: Перебор контролов