1 (изменено: Dutchnick, 2012-07-17 22:20:30)

Тема: AHK: Действия при нажатии и отпускании кнопок мыши

Вечер добрый!

Есть задача, при нажатии кнопок  MButton или XButton1 или XButton2 запускается видео, на каждой кнопке свой. При отпускании кнопки, должен закрыватся последний ролик, пока все кнопки не будут отжаты. Например: Нажимаем МВ запускается ролик 1, кнопку ХВ1 - ролик 2, ХВ2 - ролик 3, при отпускании МВ выключается ролик3, ХВ2 - ролик 2, ХВ1 - ролик1, т.е в обратном порядке.

Я делаю

XButton1::

GetKeyState, state, XButton1, P
    if state = D 
Run, G:\MPC-Homecinema.1.3.1249.0.(x86)\mpc-hc.exe  G:\3.avi /play
KeyWait, XButton1, U
IfWinExist,  Media Player Classic 
        WinKill
Return

XButton2::

GetKeyState, state, XButton2, P
    if state = D 
Run, G:\MPC-Homecinema.1.3.1249.0.(x86)\mpc-hc.exe  G:\3.avi /play
KeyWait, XButton2, U
IfWinExist,  Media Player Classic 
        WinKill
Return

MButton::

GetKeyState, state, MButton, P
    if state = D 
Run, G:\MPC-Homecinema.1.3.1249.0.(x86)\mpc-hc.exe  G:\3.avi /play
KeyWait, МButton, U
IfWinExist,  Media Player Classic 
        WinKill
Return

Но в этом случае скрипт ждет пока не отработает KeyWait  и поэтому при нажатой ХВ1 и ХВ2, и отпускании ХВ1, скрипт не отрабатывает т.к. ждет KeyWait в XButton2::

Помогите разобратся.

2

Re: AHK: Действия при нажатии и отпускании кнопок мыши

Фрагмент :

XButton1::

GetKeyState, state, XButton1, P
    if state = D

бессмысленен — сразу после нажатия вы проверяете нажата ли клавиша, будьте уверены, вы не успеете отпустить клавишу ранее, чем выполнится проверка нажата ли она

Суть вопроса: нажатие кнопки — одно действие, отпускание — другое.
Пример:

XButton1::Run, G:\MPC-Homecinema.1.3.1249.0.(x86)\mpc-hc.exe  G:\3.avi /play
Xbutton1 Up::
    IfWinExist,  Media Player Classic 
        WinKill
    return

3 (изменено: creature.ws, 2012-07-17 23:02:01)

Re: AHK: Действия при нажатии и отпускании кнопок мыши

KeyWait полезен в случае, если требуется выполнить некое действие однократно при нажатии клавиши клавиатуры — игнорируя генерируемый автоповтор нажатий, который, при неиспользовании KeyWait, будет вызывать выполнение действий привязанных к событию нажатия  с частотой установленной в «настройках клавиатуры».
Кнопки мыши отправляются однократно при нажатии и отпускании.

4

Re: AHK: Действия при нажатии и отпускании кнопок мыши

Спасибо за ответ! Я догадывался, что при нажатии не нужно отслеживать состоянии кнопки, но не сделал)))
А про

Xbutton1 Up::

вообще не догадался)))