1

Тема: AHK: Изменение текущего курсора

Прошу помочь. Нужно по нажатию [9] превратить курсор в руку,  а по нажатию [0] превратить курсор в стрелку.

OCR_NORMAL := 32512    ; обычный курсор в виде стрелки
OCR_HAND := 32649    ; курсор в виде руки

NORMAL_CursorHandle := DllCall( "LoadCursor", Uint,0, Int, OCR_NORMAL) ; загрузить системный OCR_NORMAL-курсор
HAND_CursorHandle   := DllCall( "LoadCursor", Uint,0, Int, OCR_HAND)   ; загрузить системный OCR_HAND-курсор

9:: DllCall("SetSystemCursor", UInt, HAND_CursorHandle,    Int, OCR_NORMAL) ; заменить текущий OCR_NORMAL-курсор на системный OCR_HAND-курсор

0:: DllCall("SetSystemCursor", UInt, NORMAL_CursorHandle,    Int, OCR_NORMAL) ; заменить текущий OCR_NORMAL-курсор на системный OCR_NORMAL-курсор

Проблемы: Если нажать [9] дважды, курсор возвращается в противоположное состояние. То же и при нажатии [0].

2

Re: AHK: Изменение текущего курсора

   OnExit, Exit

   OCR_NORMAL := 32512    ; обычный курсор в виде стрелки
   OCR_HAND := 32649    ; курсор в виде руки

   NORMAL_CursorHandle := DllCall( "LoadCursor", Uint,0, Int, OCR_NORMAL) ; загрузить системный OCR_NORMAL-курсор
   HAND_CursorHandle   := DllCall( "LoadCursor", Uint,0, Int, OCR_HAND)   ; загрузить системный OCR_HAND-курсор
   Return

Exit:   ; восстановление курсора:
   DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS:=0x57, UInt, 0, UInt, 0, UInt, 0)
   Return

9::
   if !hand
      DllCall("SetSystemCursor", UInt, HAND_CursorHandle, Int, OCR_NORMAL), hand := 1
   Return
   
; восстановление курсора:
0:: DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS:=0x57, UInt, 0, UInt, 0, UInt, 0), hand := ""
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Изменение текущего курсора

Спасибо!