解决一个"dynamic"/"unstable"ahk_class名字?

Solution to a "dynamic"/"unstable" ahk_class name?

在 AutoHotKey 中,ahk_class NAME 一直是程序的良好标识符。通常,我现在通过以下两种方式使用它:

  1. 简单地调用最近调用的活动实例:
    ; Pressing Win+Shift+X will bring up (or switch to) the Windows Journal
    Application
    #+x:: 
    IfWinExist ahk_class JournalApp
        WinActivate ahk_class JournalApp
    else 
        Run C:\Program Files\Windows Journal\Journal.exe
    return
  1. 将 windows 与相同的 ahk_class 分组并循环遍历它们:
    GroupAdd, FIRE, ahk_class MozillaWindowClass

    ; Pressing Win+3 will go through all open Firefox windows one by one.
    #3::
    IfWinExist ahk_class MozillaWindowClass
        GroupActivate, FIRE, r
    else
        Run firefox
    return

但是,某些程序没有 稳定 ahk_class 名称。例如,ArcMap.exe 应该 在 AHK 的“Windows Spy”window 中显示以下信息:

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Untitled - ArcMap
ahk_class Afx:012F0000:b:00010003:00000006:001C0BB0

知道如何引用这个具有动态 ahk_class 的应用程序吗?

我知道还有一个叫做 ahk_exe 的东西。但是,我没有发现它与方法 GroupAdd 兼容, GroupActivateIfWinExist.

您尝试合并 ahk_exe 绝对是在正确的轨道上。 GroupAdd(以及其他所有收到 WinTitle parameter 的命令) 与 AHK_L 中的 ahk_exe 兼容;此示例代码在我的机器上完美运行:

GroupAdd, notepad, ahk_exe notepad.exe
Run, notepad.exe
WinWaitActive, ahk_group notepad
Sleep, 1000
WinClose, ahk_group notepad

我怀疑您使用的不是最新版本的 AHK。得到它 here 再试一次。