函数参考


DllCallbackRegister

创建一个用户自定义回调函数.

DllCallbackRegister ( "函数名", "返回类型", "参数" )

参数

函数名 要调用的用户自定义函数的名称.
返回类型 函数调用后的返回值类型(参考 DllCall).
参数 使用分隔符分开的参数将会被传递给函数. 参考备注.

返回值

成功: 返回一个 dll "句柄" 给 DllCallbackGetPtr 和 DllCallbackFree 函数使用.
失败: 发生错误,返回 0.

注意/说明

可以使用除了"struct"外的所有 DllCall 类型.
当完成了回调工作, 请调用 DllCallbackFree 函数关闭它. AutoIt 虽然会在终止时关闭所有文件(句柄), 但是明确的调用 DllCallbackFree 总是一个好主意(习惯).

相关

DllCall, DllCallbackFree, DllCallbackGetPtr

示例/演示


; 创建回调函数
Local $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
        Local $res = MsgBox(1, WinGetTitle($hWnd), "$hWnd=" & $hWnd & @CRLF & "lParam=" & $lParam & @CRLF & "$hWnd(type)=" & VarGetType($hWnd))
        If $res = 2 Then Return 0   ; "取消"被点击, 返回 0 并停止枚举
    EndIf
    Return 1    ; 返回 1 继续枚举
EndFunc   ;==>_EnumWindowsProc