Vincent Tang
Vincent Tang

Reputation: 4170

Autohotkey : Wildcard ahk_class match

I used winspy to grab an ahk_class for my autohotkey macro. Sometimes that application has 2+ ahk_classes associated with that program

Example:

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

How can I use winNotExist to simply just match both names? Or perhaps use a ||, OR etc?

E.g.

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

Upvotes: 3

Views: 1899

Answers (1)

Vincent Tang
Vincent Tang

Reputation: 4170

I finally figured it out. SetTitleMatchMode, Regex.

This command affects the behavior of all windowing commands, e.g. WinExist and WinActivate

Then write some javascript-like regex statements as arguments.

The full list of window commands is on AHK site

enter image description here

Script, revised

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 now I can cycle through any application with more than 1 ahk_Class name. Example of what script does

enter image description here

Upvotes: 3

Related Questions