Erzeugt eine benutzerdefinierte Callback- (Rückruf-)funktion.
DllCallbackRegister ( "function", "return type", "params" )
function | Name der benutzerdefinierten Funktion, die aufgerufen werden soll. |
return type | Rückgabetyp und Aufrufkonvention der Funktion (siehe DllCall). |
params | Durch Semikolons getrennte Liste von Parametern, die an die aufgerufene Funktion weitergereicht werden. Siehe Bemerkungen |
Erfolg: | Das DLL-Handle, welches für DllCallbackGetPtr() und DllCallbackFree() verwendet werden kann. |
Fehler: | 0 wenn Fehler aufgetreten sind. |
Verwendet alle DllCall() Typen außer "Struct".
Wenn die Benutzung der Callback-Funktion beendet ist, sollte sie mit DllCallbackFree() freigegeben werden. AutoIt schliesst zwar normalerweise alle Dateien bei Beendigung des Skripts, sicherheitshalber sollte trotzdem DllCallbackFree() aufgerufen werden.
DllCall, DllCallbackFree, DllCallbackGetPtr
#include <MsgBoxConstants.au3>
; Erstellt Callback Funktion
Local $hHandle = DllCallbackRegister("_EnumWindowsProc", "int", "hwnd;lparam")
; EnumWindows aufrufen
DllCall("user32.dll", "int", "EnumWindows", "ptr", DllCallbackGetPtr($hHandle), "lparam", 10)
; Löscht Callback-Funktion
DllCallbackFree($hHandle)
; Callback Verfahren
Func _EnumWindowsProc($hWnd, $lParam)
; Falls der Titel leer ist oder das Fenster nicht sichtbar ist, so wird die Aufzählung fortgesetzt.
If WinGetTitle($hWnd) = "" Or BitAND(WinGetState($hWnd), 2) = 0 Then Return 1
Local $iRes = MsgBox(($MB_OKCANCEL + $MB_SYSTEMMODAL), _
WinGetTitle($hWnd), "$hWnd=" & $hWnd & @CRLF & _
"$lParam=" & $lParam & @CRLF & _
"$hWnd(type)=" & VarGetType($hWnd))
If $iRes <> $IDOK Then Return 0 ; Wenn Abbrechen geklickt, Rückgabe 0 zum Stoppen der Aufzählung
Return 1 ; Rückgabe 1 um die Aufzählung fortzusetzten
EndFunc ;==>_EnumWindowsProc