#AutoIt3Wrapper_Res_File_Add=dinosaur.ani,RT_ANICURSOR,dinocur,0
#AutoIt3Wrapper_Compression=n
#AutoIt3Wrapper_UseUpx=n
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
Global Const $OCR_NORMAL = 32512
Global Const $OCR_IBEAM = 32513
Global Const $OCR_WAIT = 32514
;XXXXXXXXXXXXXXX
$hDefaultCursorLoad = _LoadCursor($OCR_NORMAL)
$hDefaultCursor = _CopyCursor($hDefaultCursorLoad)
If @error Then
Exit ConsoleWrite("! Error copying cursor" & @CRLF)
EndIf
;XXXXXXXXXXXXXXX
$GUI = GUICreate("Test")
GUISetState()
Local $hWaitCur
; $curPath = @WindowsDir & "\Cursors\sizenesw.ani"
; $newCur = _LoadCursorFromFile($curPath)
$newCur = _LoadCursorW('dinocur')
_SetSystemCursor($newCur, $OCR_NORMAL)
While 1
If GUIGetMsg() = -3 Then ExitLoop
Sleep(10)
WEnd
_SetSystemCursor($hDefaultCursor, $OCR_NORMAL)
$hPrevCur = 0
$hWaitCur = 0
Func _LoadCursorFromFile($iCursor)
Return SetError(@error, @extended, _API(DllCall("user32.dll", "int", "LoadCursorFromFile", "str", $iCursor)))
EndFunc ;==>_LoadCursorFromFile
Func _LoadCursor($iCursor)
Return SetError(@error, @extended, _API(DllCall("user32.dll", "int", "LoadCursorA", "hwnd", 0, "int", $iCursor)))
EndFunc ;==>_LoadCursor
Func _SetSystemCursor($hCursor, $iCursor)
Return SetError(@error, @extended, _API(DllCall("user32.dll", "int", "SetSystemCursor", "int", $hCursor, "int", $iCursor)))
EndFunc ;==>_SetSystemCursor
Func _CopyCursor_($iCursor); <--- check your user32.dll for CopyCursor function. Is it there?
Return SetError(@error, @extended, _API(DllCall("user32.dll", "int", "CopyCursor", "hwnd", $iCursor)))
EndFunc ;==>_CopyCursor_
Func _DestroyCursor($iCursor)
Return SetError(@error, @extended, _API(DllCall("user32.dll", "int", "DestroyCursor", "hwnd", $iCursor)))
EndFunc ;==>_DestroyCursor
Func _API($v_ret)
Local $err = @error
Local $ext = @extended
If Not $err Then
If IsArray($v_ret) Then
Return $v_ret[0]
Else
Return $v_ret
EndIf
EndIf
Return SetError($err, $ext, 0)
EndFunc ;==>_API
Func _CopyCursor($hCursor)
Local $aCall = DllCall("user32.dll", "hwnd", "CopyImage", _
"hwnd", $hCursor, _
"dword", 2, _; IMAGE_CURSOR
"int", 0, _; same width as the original
"int", 0, _; same height as the original
"dword", 16384); LR_COPYFROMRESOURCE
If @error Or Not $aCall[0] Then
Return SetError(1, 0, 0)
EndIf
Return SetError(0, 0, $aCall[0])
EndFunc ;==>_CopyCursor
Func _LoadCursorW($sCursorName)
Local $DataType = "WSTR"
Local $HModule = _WinAPI_GetModuleHandle(0)
$sCursorName = StringUpper($sCursorName)
$HCURSOR = DllCall("User32.dll", "PTR", "LoadCursorW", "PTR", $HModule, $DataType, $sCursorName)
If @error Or $HCURSOR[0] = 0 Then
Return SetError(2, 0, 0)
EndIf
Return SetError(0, 0, $HCURSOR[0])
EndFunc ;==>_LoadCursor