1

Эта проблема

После нажатия левой кнопки мыши с ним активируется горячая клавиша для Win+Z (или, по сути, любой код под горячей LButton )


Что это?

Это переключатель AutoHotkey для Rainmeter HUD.


Код

#If WinActive("ahk_class RainmeterMeterWindow")
~LButton::
{
Run, C:\Program Files\Rainmeter\Rainmeter.exe !Hide *
WinMinimizeAllUndo
rainystate := 0
}
#If


#z::
{
if (rainystate = 0)
{
    WinMinimizeAll
    Run, C:\Program Files\Rainmeter\Rainmeter.exe !RainmeterZPos 1 *
    Run, C:\Program Files\Rainmeter\Rainmeter.exe !Show *
    Run, C:\Program Files\Rainmeter\Rainmeter.exe !RainmeterZPos 0 "WP7\Background"
    Run, C:\Program Files\Rainmeter\Rainmeter.exe !RainmeterZPos 2 "WP7\Panels\Computer"
    rainystate := 1
}
else
{
    Run, C:\Program Files\Rainmeter\Rainmeter.exe !Hide *
    WinMinimizeAllUndo
    rainystate := 0
}
Sleep 50
Return
}

Материал, который я пробовал

  • Переместил весь блок #If в другую позицию
    • Он запустил свой код, а затем вызвал горячую клавишу под ним
  • Вместо этого попробовал #IfWinActive ahk_class RainmeterMeterWindow
    • Проблема сохраняется

Что может быть причиной проблемы

Оператор #If прямо под закрывающей фигурной скобкой } (тот, что в строке 8)



Я думаю, что это должно работать, потому что документы AHK (http://l.autohotkey.net/docs/commands/_If.htm) заявляют следующее:

Чтобы отключить контекстную чувствительность, укажите #If или любую директиву #IfWin, но пропустите все параметры. Например:

#If

что было именно то, что было сделано.

Я просто понятия не имею, в чем именно заключается проблема, кроме #If WinActive("ahk_class RainmeterMeterWindow") просачивающегося в код ниже.

1 ответ1

1

Вам не хватает Return после вашей первой горячей клавиши. Код горячей клавиши работает до тех пор, пока не достигнет Return . Ваш сценарий должен выглядеть следующим образом. Я также сделал немного форматирования для вас.

#If WinActive("ahk_class RainmeterMeterWindow")
    ~LButton::
        Run, C:\Program Files\Rainmeter\Rainmeter.exe !Hide *
        WinMinimizeAllUndo
        rainystate := 0
    Return   ; This was missing
#If


#z::
    if (rainystate = 0)
    {
        WinMinimizeAll
        Run, C:\Program Files\Rainmeter\Rainmeter.exe !RainmeterZPos 1 *
        Run, C:\Program Files\Rainmeter\Rainmeter.exe !Show *
        Run, C:\Program Files\Rainmeter\Rainmeter.exe !RainmeterZPos 0 "WP7\Background"
        Run, C:\Program Files\Rainmeter\Rainmeter.exe !RainmeterZPos 2 "WP7\Panels\Computer"
        rainystate := 1
    }
    else
    {
        Run, C:\Program Files\Rainmeter\Rainmeter.exe !Hide *
        WinMinimizeAllUndo
        rainystate := 0
    }
    Sleep 50
Return

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .