2017-11-16 2 views
0

Ich habe Winspy verwendet, um eine ahk_class für mein Autohotkey-Makro zu greifen. Manchmal hat, dass die Anwendung 2+ ahk_classes dem Programm zugeordnetAutohotkey: Wildcard ahk_class Übereinstimmung

Beispiel:

HwndWrapper[program.exe;;1111-1111] 
HwndWrapper[program.exe;;2222-2222] 

Wie kann ich winNotExist verwenden, um einfach nur beide Namen überein? Oder vielleicht ein ||, OR etc?

z.

F12:: 
IfWinNotExist, ahk_class "HwndWrapper.+" 
    Run, AQ8.exe 
GroupAdd, kjexplorers11, ahk_class "HwndWrapper.+" ;You have to make a new group for each application, don't use the same one for all of them! 
if WinActive("ahk_exe AQ8.exe") 
    GroupActivate, kjexplorers11, r 
else 
    WinActivate ahk_class ahk_class "HwndWrapper.+" ;you have to use WinActivatebottom if you didn't create a window group. 
Return 
+0

Versuchen [SetTitleMatchMode RegEx] (https://autohotkey.com/docs/commands/SetTitleMatchMode.htm) oder eine Gruppe von diesen beiden ahk_classes erstellen mit [GroupAdd] (https: //autohotkey.com/docs/commands/GroupAdd.htm) und 'IfWinNotExist, ahk_group my Group'. – user3419297

+0

Ich verstehe nicht, wie settitlematchmode funktioniert. Die Dokumentation fehlt in guten Beispielen. Woher weiß es, es auf meine ahk_class-Aussagen anzuwenden, die hier zu sehen sind? – Kagerjay

Antwort

0

Ich endlich herausgefunden. SetTitleMatchMode, Regex.

Dieser Befehl beeinflusst das Verhalten aller Fensterbefehle, z. WinExist und WinActivate

Dann schreiben Sie einige Javascript-wie Regex-Anweisungen als Argumente.

Die vollständige Liste der Fenster-Befehle ist auf AHK site

enter image description here

Script überarbeitet

F12:: 
SetTitleMatchMode,RegEx 
IfWinNotExist, ahk_class HwndWrapper.+ 
    Run, AQ8.exe 
GroupAdd, kjexplorers11, ahk_class HwndWrapper.+ ;You have to make a new group for each application, don't use the same one for all of them! 
if WinActive("ahk_exe AQ8.exe") 
    GroupActivate, kjexplorers11, r 
else 
    WinActivate ahk_class ahk_class HwndWrapper.+ ;you have to use WinActivatebottom if you didn't create a window group. 
Return 

So, jetzt kann ich durchlaufen jede Anwendung mit mehr als 1 ahk_class Namen. Beispiel dafür, was Skript macht

enter image description here

+0

Ich würde "HwndWrapper_Group" anstelle von "kjexplorers11" verwenden, um klarzustellen, dass es sich um eine Windows-Gruppe dieser App oder Klasse handelt. – user3419297