基 础 函 数 参 考


DllCallbackRegister

创建自定义 DLL 回调函数.

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

参 数

函数 用户自定义函数的名称.
返回类型 函数的返回类型和调用约定 (见 DllCall).
参数 分号分隔的、将被传递到函数的参数列表. 见备注.

返 回 值

成功: 返回供 DllCallbackGetPtr 和 DllCallbackFree 函数使用的 dll 句柄.
失败: 返回 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 & @CRLF & "lParam=" & $lParam & @CRLF & "句柄(类型)=" & VarGetType($hWnd))
        If $res = 2 Then Return 0 ; "取消" 按钮被点击, 返回 0 并停止枚举
    EndIf
    Return 1 ; 返回 1 继续枚举
EndFunc   ;==>_EnumWindowsProc

provider with jb51.net (unicode)