ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

DonationCoder.com Software > Finished Programs

SOLVED: autohotkey makes cursor slide - i want mouse movement to halt the slide

<< < (4/4)

nudone:
i mentioned above that i might try and adapt the script so that it will make the cursor travel around corners - moving from a lower corner screen to the upper middle screen (and vice versa).

but it appears the the script allows for this already, in a buggy kind of way. so that is fortunate.

skwire:
yes, they are what i saw - and became no less confused after reading them. i will try to understand it, maybe it's very simple.-nudone (May 06, 2010, 07:35 PM)
--- End quote ---

It is rather simple since Serenity wrapped the functions nicely.  Simply add the following function definitions to the BOTTOM of your script:


--- Code: AutoIt ---RestoreCursors(){   SPI_SETCURSORS := 0x57   DllCall( "SystemParametersInfo", UInt,SPI_SETCURSORS, UInt,0, UInt,0, UInt,0 )} SetSystemCursor( Cursor = "", cx = 0, cy = 0 ){   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 ) )                  }               }   }   }
Then, to change the cursor, do the following:


--- Code: AutoIt ---Cursor := "C:\path\to\my\cursor.cur"SetSystemCursor( Cursor )
Or:


--- Code: AutoIt ---SetSystemCursor( "C:\path\to\my\cursor.cur" )
To restore the cursor, simply do:


--- Code: AutoIt ---RestoreCursors()

nudone:
thank you very much for explaining that, skwire. i might have understood it after a (few) rereads, i just couldn't figure out what was important and what was noise in the thread.

i'll go and implement it now...

Navigation

[0] Message Index

[*] Previous page

Go to full version