ユーザー定義のDLLコールバック関数を作成します。
DllCallbackRegister ( "function", "return type", "params" )
パラメータ
function | 呼ぶユーザー定義関数の名前 |
return type | 返し値の型と関数の呼び出し規約(DllCallを参照) |
params | セミコロンで区切ったこの関数に渡されるパラメータのリスト。DllCallの型を使用してください。 |
返し値
成功 | DllCallbackGetPtr関数とDllCallbackFree関数で使用されるDLLのハンドル |
失敗 | エラーが起きた場合、0を返します。 |
注意
コールバックでの作業が終わった際には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
$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