Cryzer
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору vadim3sh Спасибо за ссылку, очень полезный материал! За пару часов смог сам реализовать то, что хотел, даже не думал, что получится) Вот мой код: Код: #IfWinActive ahk_class CabinetWClass MButton:: WinGetPos, X, Y, W, H X:=X+4 ; координата активного окна без учёта рамки Y:=Y+4 ; координата активного окна без учёта рамки W:=W-8 ; длина активного окна без учёта рамок H:=H-8 ; высота активного окна без учёта рамок MouseGetPos, mX, mY mX:=mX-4 ; координата указателя мыши относительно активного окна без учёта рамки mY:=mY-4 ; координата указателя мыши относительно активного окна без учёта рамки WX:=W+X HY:=H+Y ; MsgBox, X=%X%, W=%W%, mX=%mX%, Y=%Y%, H=%H%, mY=%mY%, (W+X=%WX%), (H+Y=%HY%) if (mX >= 0 && mY >= 0 && mX < W && mY < H) { ; MsgBox F5 Send {F5} } return | Глядя на возможности AutoHotkey, захотелось усовершенствовать свой код. Но столкнулся с одной проблемой. В вышенаписанном коде колёсико мыши перехватывается тогда, когда активен проводник. Но действия выполняются только внутри окна. За пределами активного окна колёсико не реагирует. Как это исправить? Я попробовал усовершенствовать код, т.е. сделать так, чтобы колёсико не перехватывалось, а проверялось его нажатие. Вот пример: Код: #IfWinActive ahk_class CabinetWClass Loop { if GetKeyState("MButton", "P") != 0 ; если колёсико нажато { Goto, Next } } Next: WinGetPos, X, Y, W, H X:=X+4 ; координата активного окна без учёта рамки Y:=Y+4 ; координата активного окна без учёта рамки W:=W-8 ; длина активного окна без учёта рамок H:=H-8 ; высота активного окна без учёта рамок MouseGetPos, mX, mY mX:=mX-4 ; координата указателя мыши относительно активного окна без учёта рамки mY:=mY-4 ; координата указателя мыши относительно активного окна без учёта рамки WX:=W+X HY:=H+Y MsgBox, X=%X%, W=%W%, mX=%mX%, Y=%Y%, H=%H%, mY=%mY%, (W+X=%WX%), (H+Y=%HY%) if (mX >= 0 && mY >= 0 && mX < W && mY < H) { ; MsgBox F5 Send {F5} } return | Здесь я вместо перехвата (MButton:: ) поставил проверку и зациклил. Хотя тут ещё надо весь скрипт зациклить, а то он только 1 раз выполняется (пока не стал этого делать) (я так понял, запись вида MButton:: автоматически зацикливает скрипт, т.к. он в этом случае не завершается). Но теперь появилась проблема: WinGetPos почему-то не возвращает позицию и размеры окна, да и проводник не определяется. Как это можно исправить? | Всего записей: 102 | Зарегистр. 22-09-2007 | Отправлено: 17:24 17-02-2014 | Исправлено: Cryzer, 21:47 17-02-2014 |
|