#include <GUIConstantsEx.au3>
Global $CURSOR = @ScriptDir & '\1.cur'
$Form1 = GUICreate("Form1", 633, 449, 192, 124)
GUISetState()
While 1
If GetHoveredHwnd() = $Form1 Then
_SetCursor($CURSOR, 32512)
Else
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 0x57, "int", 0, "int", 0, "int", 0)
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 0x57, "int", 0, "int", 0, "int", 0)
Exit
EndSwitch
WEnd
Func _SetCursor($s_file, $i_cursor)
Local $newhcurs, $lResult
$newhcurs = DllCall("user32.dll", "int", "LoadCursorFromFile", "str", $s_file)
If Not @error Then
$lResult = DllCall("user32.dll", "int", "SetSystemCursor", "int", $newhcurs[0], "int", $i_cursor)
If Not @error Then
$lResult = DllCall("user32.dll", "int", "DestroyCursor", "int", $newhcurs[0])
Else
MsgBox(0, "Error", "Failed SetSystemCursor")
EndIf
Else
MsgBox(0, "Error", "Failed LoadCursorFromFile")
EndIf
EndFunc ;==>_SetCursor
Func GetHoveredHwnd()
Local $iRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1))
If IsArray($iRet) Then Return HWnd($iRet[0])
Return SetError(1, 0, 0)
EndFunc