Created
March 26, 2013 18:57
-
-
Save aboveaboutbelow/5248137 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#NoTrayIcon | |
#Persistent | |
DefaultBusyTime := 1000 | |
SetSystemCursor("IDC_WAIT") | |
If %0% > 1 | |
SetTimer,RestoreSystemCursor,-%1% | |
Else | |
SetTimer,RestoreSystemCursor,-%DefaultBusyTime% | |
Return | |
RestoreSystemCursor: | |
SetSystemCursor("Restore") | |
ExitApp | |
Return | |
SetSystemCursor( Cursor = "", cx = 0, cy = 0 ) { ; by Serenity. Minor modification by Learning one. | |
; http://www.autohotkey.com/forum/topic35600.html | |
if Cursor = Restore | |
{ | |
DllCall( "SystemParametersInfo", UInt,0x57, UInt,0, UInt,0, UInt,0 ) | |
Return | |
} | |
BlankCursor := 0, SystemCursor := 0, FileCursor := 0 ; init | |
SystemCursors = 32512IDC_ARROW,32513IDC_IBEAM,32514IDC_WAIT,32515IDC_CROSS | |
,32516IDC_UPARROW,32640IDC_SIZE,32641IDC_ICON,32642IDC_SIZENWSE | |
,32643IDC_SIZENESW,32644IDC_SIZEWE,32645IDC_SIZENS,32646IDC_SIZEALL | |
,32648IDC_NO,32649IDC_HAND,32650IDC_APPSTARTING,32651IDC_HELP | |
If Cursor = ; empty, so create blank cursor | |
{ | |
VarSetCapacity( AndMask, 32*4, 0xFF ), VarSetCapacity( XorMask, 32*4, 0 ) | |
BlankCursor = 1 ; flag for later | |
} | |
Else If SubStr( Cursor,1,4 ) = "IDC_" ; load system cursor | |
{ | |
Loop, Parse, SystemCursors, `, | |
{ | |
CursorName := SubStr( A_Loopfield, 6, 15 ) ; get the cursor name, no trailing space with substr | |
CursorID := SubStr( A_Loopfield, 1, 5 ) ; get the cursor id | |
SystemCursor = 1 | |
If ( CursorName = Cursor ) | |
{ | |
CursorHandle := DllCall( "LoadCursor", Uint,0, Int,CursorID ) | |
Break | |
} | |
} | |
If CursorHandle = ; invalid cursor name given | |
{ | |
Msgbox,, SetCursor, Error: Invalid cursor name | |
CursorHandle = Error | |
} | |
} | |
Else If FileExist( Cursor ) | |
{ | |
SplitPath, Cursor,,, Ext ; auto-detect type | |
If Ext = ico | |
uType := 0x1 | |
Else If Ext in cur,ani | |
uType := 0x2 | |
Else ; invalid file ext | |
{ | |
Msgbox,, SetCursor, Error: Invalid file type | |
CursorHandle = Error | |
} | |
FileCursor = 1 | |
} | |
Else | |
{ | |
Msgbox,, SetCursor, Error: Invalid file path or cursor name | |
CursorHandle = Error ; raise for later | |
} | |
If CursorHandle != Error | |
{ | |
Loop, Parse, SystemCursors, `, | |
{ | |
If BlankCursor = 1 | |
{ | |
Type = BlankCursor | |
%Type%%A_Index% := DllCall( "CreateCursor" | |
, Uint,0, Int,0, Int,0, Int,32, Int,32, Uint,&AndMask, Uint,&XorMask ) | |
CursorHandle := DllCall( "CopyImage", Uint,%Type%%A_Index%, Uint,0x2, Int,0, Int,0, Int,0 ) | |
DllCall( "SetSystemCursor", Uint,CursorHandle, Int,SubStr( A_Loopfield, 1, 5 ) ) | |
} | |
Else If SystemCursor = 1 | |
{ | |
Type = SystemCursor | |
CursorHandle := DllCall( "LoadCursor", Uint,0, Int,CursorID ) | |
%Type%%A_Index% := DllCall( "CopyImage" | |
, Uint,CursorHandle, Uint,0x2, Int,cx, Int,cy, Uint,0 ) | |
CursorHandle := DllCall( "CopyImage", Uint,%Type%%A_Index%, Uint,0x2, Int,0, Int,0, Int,0 ) | |
DllCall( "SetSystemCursor", Uint,CursorHandle, Int,SubStr( A_Loopfield, 1, 5 ) ) | |
} | |
Else If FileCursor = 1 | |
{ | |
Type = FileCursor | |
%Type%%A_Index% := DllCall( "LoadImageA" | |
, UInt,0, Str,Cursor, UInt,uType, Int,cx, Int,cy, UInt,0x10 ) | |
DllCall( "SetSystemCursor", Uint,%Type%%A_Index%, Int,SubStr( A_Loopfield, 1, 5 ) ) | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment