Функция DllCallbackRegister

         Описание функции


DllCallbackRegister

Создаёт пользовательскую функцию обратного вызова (DLL Callback).

DllCallbackRegister ( "function", "return type", "params" )

Параметры

function Имя пользовательской функции (UDF) для вызова.
return type Тип возвращаемого значения и соглашение вызова функции (смотрите DllCall()).
params Список параметров, разделённый точкой с запятой ';', который будет передан этой функции. См. примечание.

Возвращаемое значение

Успех:Возвращает дескриптор dll для использования с функциями DllCallbackGetPtr() и DllCallbackFree().
Ошибка:Возвращает 0, если произошла ошибка.

Примечания

Используйте все типы DllCall() кроме "struct".
После окончания работы с callback, вызовите функцию DllCallbackFree(), чтобы закрыть его. AutoIt обычно закрывает все файлы по окончании, но вызов DllCallbackFree() все же рекомендуется.

См. также

DllCall, DllCallbackFree, DllCallbackGetPtr

Пример

; Создаёт функцию обратного вызова
$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