DllCallbackRegister
Создаёт пользовательскую функцию обратного вызова (DLL Callback).
DllCallbackRegister ( "function", "return type", "params" )
Параметры
function | Имя пользовательской функции (UDF) для вызова. |
return type |
Тип возвращаемого значения и соглашение вызова функции (смотрите DllCall()). |
params |
Список параметров, разделённый точкой с запятой ';', который будет передан этой функции. См. примечание. |
Возвращаемое значение
Успех: | Возвращает дескриптор dll для использования с функциями DllCallbackGetPtr() и DllCallbackFree(). |
Ошибка: | Возвращает 0, если произошла ошибка. |
Примечания
Используйте все типы DllCall() кроме "struct".См. также
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