Что нового

[Мышь, клавиатура] Возможно ли отследить щелчек 3-ей (4й, 5й) кнопкой мыши

Dm666

Осваивающий
Сообщения
221
Репутация
48
Имеется обычная пятикнопочная мышь. Никаких спецдрайверов под нее не ставится, никаких своих иконок в трее она не имеет.
Можно ли как-то отловить событие щелчка кнопками 4 и 5 (боковые, которые Вперед/Назад в IE) ну, или на худой конец, щелчок колесом?
 
Автор
Dm666

Dm666

Осваивающий
Сообщения
221
Репутация
48
CreatoR

Спасибо, то что надо! Да этой UDF-ке цены нет! :IL_AutoIt_1: :beer:

Работает замечательно, только вот одна непонятка с MsgBox. Такой код:
Код:
#include <MouseOnEvent.au3>
HotKeySet("{Esc}","_Exit")

_MouseSetOnEvent($MOUSE_XBUTTONDOWN_EVENT, "_MB")
_MouseSetOnEvent($MOUSE_WHEELDBLCLK_EVENT, "_Wheel")

While 1
    Sleep(10)
WEnd

Func _MB()
    MsgBox(0, '',"")
EndFunc

Func _Wheel()
    MsgBox(0, '',"")
EndFunc

Func _Exit()
    Exit
EndFunc


Щелкаем боковой кнопкой, появляется MsgBox. До сюда все логично, а дальше начинаются странности:
MsgBox висит 5 секунд, при этом заблокированы все кнопки мыши, никуда кликнуть нельзя, в том числе и по самому боксу. Через 5 секунд бокс уходит на задний план, мышь отпускает, можно работать дальше.
Это баг,фича, или я что-то криво написал?

Edit: И еще вдогонку, раз уж начал. Не обрабатывается даблклик, при двойном щелчке колесом ничего не происходит. Где копать?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Dm666 [?]
Это баг,фича, или я что-то криво написал?
В описаний к библиотеке (в ней самой) сказано:

Notes:
1) The original events-messages (such as $WM_MOUSEMOVE) can be used as well.
2) Blocking of $sFuncName function by window messages with commands such as "Msgbox()" can lead to unexpected behavior,
the return to the system should be as fast as possible!
Это говорит о том, что не следует блокировать функцию второго параметра, а MsgBox естественно её блокирует.

Не обрабатывается даблклик
Вот тут есть костыль для этого.
 
Автор
Dm666

Dm666

Осваивающий
Сообщения
221
Репутация
48
Виноват, поленился вчитываться. Стыдно. :-[

Все работает, спасибо.
 
Верх