AutoHotkey задыхается на той же фигурной скобке для составных операторов if - PullRequest
2 голосов
/ 01 декабря 2009

У меня есть проблема, когда AutoHotkey сообщает мне, что пропущен { перед «другим», где я думаю, что мой Код в порядке. (Это работало до тех пор, пока я не изменил относящиеся к окну if с Pidgin на qutIM)

^!p::
   IfWinExist ahk_class QWidget, ,qutIM {  ;if there is a qutIM-window other than the buddy-list...
      IfWinNotActive ahk_class QWidget, , qutIM {  ;ans it is not active...
         WinActivate
      } else {  ;the closing bracket in front of the else here puts AHK off...
         WinMinimize
      } 
   } else {  ;do some stuff with the buddy-list
      ; [...]
   } 
return

Боюсь, я упускаю из виду что-то глупое, но я не могу заставить это работать.

Ответы [ 3 ]

2 голосов
/ 02 декабря 2009

Если я не ошибаюсь, стиль One True Brace можно использовать только с чистыми операторами If, а не с такими соединениями, как IfWinExist.

Из документации для if-выражений :

При необходимости стиль One True Brace (OTB) можно использовать с операторы if, которые являются выражениями (но не традиционными если-заявления).

Т.е.. Вы должны использовать форму WinExist (), а не IfWinExist.

0 голосов
/ 28 августа 2017

Как сказал PhiLho , стиль One True Brace (OTB) нельзя использовать с составными операторами if.

Хотя прямой функции для WinNotActive() нет, вы можете использовать ! в качестве модификатора для того же эффекта.

^!p::
   if WinExist("ahk_class QWidget", , "qutIM") {
      if !WinActive("ahk_class QWidget", , "qutIM") {
         WinActivate
      } else {
         WinMinimize
      } 
   } else {
      ; [...]
   } 
return
0 голосов
/ 10 декабря 2009

Поскольку у меня нет приложения, которое вы тестируете, я не совсем уверен, что вы пытаетесь заставить его сделать, но это может быть другой путь:

^!p::
IfWinExist, ahk_class Notepad ; if there is a qutIM-window other than the buddy-list
    {
    WinActivate
    Exists=True
    }
else ;the closing bracket in front of the else here puts AHK off...
    {
    WinMinimize
    Exists=False
    }
If Exists=True 
    MsgBox, do some stuff with the buddy-list ; dummy code
Else
    {
    Msgbox, Exiting App ; dummy code
    ExitApp
    }
...