Alle 3 Bedingungen in Autohotkey festlegen (wie wird "AND" codiert)

641
Faye

Ich habe einen einfachen Autohotkey-Code, aber ich kann nicht herausfinden, wie alle 3 Bedingungen erfüllt werden, bevor die Regeln in der ersten Klammer ausgeführt werden.

Mein Code funktioniert wie, wenn eine Bedingung erfüllt ist, wird er fortgesetzt. Ich möchte aber alle 3 Bedingungen erfüllen, bevor ich fortfahre.

Die Bedingungen sollten sein:

  1. Der Titel des Fensters muss September-Verkauf sein.
  2. Das Fenster muss Microsoft Word sein
  3. Prozess 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
Haben Sie versucht, wenn (dieses && das) {...} ejbytes vor 7 Jahren 0

2 Antworten auf die Frage

0
Robbie W.

Die Autohotkey-Dokumentation zu IfWinExist / IfWinNotExist / WinExist enthält ein Beispiel für mehrere Bedingungen.

wenn WinExist ("ahk_class Notepad") oder WinExist ("ahk_class". ClassName)

Für Ihre Zwecke möchten Sie den folgenden Code

if WinExist("September-Sales") and WinExist("ahk_class OpusApp") and WinExist("ahk_exe WINWORD.EXE") { ... } 
Ich habe das schon probiert, aber es hat nicht funktioniert. Es ist ODER, nicht UND. Ich weiß nicht, wie man "AND" und wie man es codiert. Faye vor 7 Jahren 0
Bearbeitet, um spezifisches Codebeispiel hinzuzufügen. Ich habe gerade ein Word-Dokument geöffnet und versucht, den von mir angegebenen Code auszuführen ("..." durch "Msgbox" zu ersetzen), und es lief nicht. Dokument als 'September-Verkauf' gespeichert und erneut gelesen, und es funktionierte. Robbie W. vor 7 Jahren 0
Eigentlich werden wir es mit Sublime_Text ("ahk_class PX_WINDOW_CLASS" und "ahk_exe sublime_text.exe") verwenden, nicht mit MS-Word (ich habe nur gesagt, weil ich nicht sicher bin, ob die Leute hier mit SublimeText vertraut sind). Ja, es hat nur mit dem Titel und der Klasse funktioniert, funktioniert aber nicht mit der dritten Bedingung. Daher habe ich die Bedingung "ahk_exe sublime_text.exe" entfernt. Wie können wir die dritte Bedingung aufnehmen? Faye vor 7 Jahren 0
"September-Verkauf" ist wahrscheinlich nicht der genaue Titel des Fensters. In diesem Fall benötigen Sie ** `SetTitleMatchMode, 2` ** und **` If WinExist ("September-Sales ahk_class PX_WINDOW_CLASS ahk_exe sublime_text.exe") `**. Siehe [Mehrere Kriterien] (https://autohotkey.com/docs/misc/WinTitle.htm#multi) und [SetTitleMatchMode] (https://autohotkey.com/docs/commands/SetTitleMatchMode.htm). user3419297 vor 7 Jahren 1
Hallo Robbie W. - Es funktioniert jetzt hier. Vielen Dank.. :-). Wir haben gerade Ihr gegebenes "If WinExist (" September-Sales ahk_class PX_WINDOW_CLASS ahk_exe sublime_text.exe "" verwendet.) ".." Über den SetTitleMatchMode wissen wir nicht, wozu es dient, aber es funktioniert jetzt perfekt. Faye vor 7 Jahren 0
Ich wusste gar nicht, dass Sie mehrere Kriterien hinzufügen können, also +1 @ user3419297. Ich bin froh, dass es funktioniert hat. Robbie W. vor 7 Jahren 0
0
ejbytes

Sie beenden Ihre Aussagen zu früh mit dem ';' Operator.

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