Что нового

Выполнение действия с помощью ролика мышы

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
Доброго времени суток, заинтересовал такой вопрос. А можно ли использовать ролик мыши для исполнения действия вперед/назад? Ну, к примеру, использовать это колесико для нажатия кнопок вперед/назад.

Хотел попробовать через Виртуальные коды а именно с помощью middle mouse button(средняя кнопка мыши), но похоже это работает только на клик внутрь колесика.

Скажите, а ролик этот вообще возможно использовать в программе на autoit, кроме как в GUICtrlCreateEdit, и если да, то каким образом.

Заранее спасибо
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
MouseOnEvent - Обработка событии мышки

VermanVendetta13 [?]
Хотел попробовать через Виртуальные коды а именно с помощью middle mouse button(средняя кнопка мыши), но похоже это работает только на клик внутрь колесика.

Скажите, а ролик этот вообще возможно использовать в программе на autoit, кроме как в GUICtrlCreateEdit, и если да, то каким образом.
Да, возможно. Вам нужны эти константы:
CreatoR сказал(а):
Код:
$MOUSE_MOVE_EVENT ;Движение мышки.
$MOUSE_WHEELSCROLL_EVENT ;Прокручивание коллёсика средней кнопки.
$MOUSE_WHEELSCROLLDOWN_EVENT ;Прокручивание коллёсика средней кнопки вниз.
$MOUSE_WHEELSCROLLUP_EVENT ;Прокручивание коллёсика средней кнопки вверх.
Вот вам пример:
Код:
#include "MouseOnEvent.au3"

_MouseSetOnEvent($MOUSE_WHEELSCROLLUP_EVENT, "_scroll_up", 0, 1)
_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT, "_scroll_down", 0, 1)

Sleep(20000)

_MouseSetOnEvent($MOUSE_WHEELSCROLLUP_EVENT)
_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT)
Exit

Func _scroll_up()
	ConsoleWrite("Колесо мыши поехало наверх!"&@CRLF)
EndFunc
Func _scroll_down()
	ConsoleWrite("Колесо мыши покатилось вниз!"&@CRLF)
EndFunc
 

Tapok

Новичок
Сообщения
204
Репутация
0
А как изменить код, чтобы событие было не по каждому прокручиванию мыши на 1 поворот, а не зависимо от кол-ва единовременных поворотов- одно событие прокручивания-одно событие (действие)
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
#include "MouseOnEvent.au3"

_MouseSetOnEvent($MOUSE_WHEELSCROLLUP_EVENT, "_scroll_up", 0, 1)
_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT, "_scroll_down", 0, 1)

Sleep(20000)

_MouseSetOnEvent($MOUSE_WHEELSCROLLUP_EVENT)
_MouseSetOnEvent($MOUSE_WHEELSCROLLDOWN_EVENT)
Exit

Func _scroll_up()
	If _CheckEvent("up") Then
		ConsoleWrite("Колесо мыши поехало наверх!"&@CRLF)
	EndIf
EndFunc
Func _scroll_down()
	If _CheckEvent("down") Then
		ConsoleWrite("Колесо мыши покатилось вниз!"&@CRLF)
	EndIf
EndFunc


Func _CheckEvent($sEvent, $iDelay = 500)
	If Not IsDeclared("__LastEvent") Then _
		Global $__LastEvent[2]
	; ---
	If $__LastEvent[0] <> $sEvent Or TimerDiff($__LastEvent[1]) > $iDelay Then
		$__LastEvent[0] = $sEvent
		$__LastEvent[1] = TimerInit()
		Return 1
	EndIf
	Return 0
EndFunc


Меняйте параметр $iDelay на ваше усмотрение.
 

Tapok

Новичок
Сообщения
204
Репутация
0
firex, а как изменить код, чтобы он не 20 сек работал, а до нажатия {ESQ}? :scratch:
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Tapok сказал(а):
firex, а как изменить код, чтобы он не 20 сек работал, а до нажатия {ESQ}? :scratch:
Сделать цикл While бесконечный.
Код:
HotKeySet("{ESC}", "_quit")
While 1
	Sleep(1000)
WEnd

Func _quit()
	Exit
EndFunc
 
Верх