Как сделать все 3 условия в Autohotkey (как кодировать «И»)

570
Faye

У меня есть простой код autohotkey, но я не могу понять, как выполнить все 3 условия, прежде чем выполнять правила в первой скобке.

Мой код работает следующим образом: если будет выполнено какое-либо условие, оно продолжится. Но я хочу, чтобы все 3 условия были выполнены, прежде чем продолжить.

Условия должны быть:

  1. заголовок окна должен быть сентябрь-продажи.
  2. окно должно быть Microsoft Word
  3. процесс winword.exe
Start:  IfWinExist, September-Sales ; (Title of the Microsoft Word Window)  if WinExist("ahk_class OpusApp") ; class  if WinExist("ahk_exe WINWORD.EXE") ; process { WinActivate SendInput,  SendInput,  SendInput,  }  else  msgbox, Call the Encoder and give the O.R. Number. Return End 
0
Вы пробовали, если (это && это) {...} ejbytes 7 лет назад 0

2 ответа на вопрос

0
Robbie W.

В документации Autohotkey для IfWinExist / IfWinNotExist / WinExist приведен пример нескольких условий.

если WinExist ("блокнот ahk_class") или WinExist ("класс ahk_class". ClassName)

Для ваших целей вы хотели бы следующий код

if WinExist("September-Sales") and WinExist("ahk_class OpusApp") and WinExist("ahk_exe WINWORD.EXE") { ... } 
Я уже пробовал это, но не сработало. Это ИЛИ, а не И. Я не знаю, как поставить «И» и как его кодировать. Faye 7 лет назад 0
Отредактировано, чтобы добавить конкретный пример кода. Я только что открыл документ Word и попытался запустить код, который я дал (заменив «...» на Msgbox), но он не запустился. Сохраненный документ как «Сентябрь-Продажи» и повторно его, и это сработало. Robbie W. 7 лет назад 0
На самом деле, мы будем использовать его с Sublime_Text («ahk_class PX_WINDOW_CLASS» и «ahk_exe sublime_text.exe»), а не с MS-Word (я просто сказал, что, поскольку я не уверен, что люди здесь знакомы с SublimeText). Да, он работал только с заголовком и классом, но не будет работать с 3-м условием, поэтому я удалил условие «ahk_exe sublime_text.exe». Как мы можем включить третье условие? Faye 7 лет назад 0
«Сентябрь-Продажи» не является точным названием окна. В этом случае вам понадобятся ** `SetTitleMatchMode, 2` ** и **` If WinExist ("Сентябрьские продажи ahk_class PX_WINDOW_CLASS ahk_exe sublime_text.exe") `**. См. [Несколько критериев] (https://autohotkey.com/docs/misc/WinTitle.htm#multi) и [SetTitleMatchMode] (https://autohotkey.com/docs/commands/SetTitleMatchMode.htm). user3419297 7 лет назад 1
Привет, Робби В. - Он работает прямо здесь и сейчас. Большое спасибо.. :-). Мы просто использовали ваше заданное «Если WinExist (« Сентябрь-Продажи ahk_class PX_WINDOW_CLASS ahk_exe sublime_text.exe »)» .. Что касается SetTitleMatchMode, мы не знаем, для чего он, но сейчас он отлично работает. Faye 7 лет назад 0
Я даже не догадывался, что вы могли бы добавить несколько критериев, так что +1 @ user3419297. Рад, что это сработало. Robbie W. 7 лет назад 0
0
ejbytes

Вы слишком рано заканчиваете свои утверждения знаком «;» оператор.

if WinExist("ahk_exe WINWORD.EXE") && WinExist("ahk_class OpusApp") { WinActivate SendInput,  SendInput,  SendInput,  } else  { msgbox, Call the Encoder and give the O.R. Number. } Return 

Похожие вопросы