如何获取AutoHotkey的ahk_class名称?

时间:2018-08-23 04:17:01

标签: autohotkey

按照this link的说明进行操作,以下代码可以正常工作。

#IfWinActive ahk_class Notepad
a::MsgBox pressed "a"

但是,我只想在OneNote上应用热键(Windows 10,MS Office 2016)。 在TaskManager的详细信息面板上,onenote命名为; ONENOTE.EXE,但下面的所有代码均无效。

#IfWinActive ahk_class ONENOTE
a::MsgBox pressed "a"

#IfWinActive ahk_class ONENOTE.EXE
a::MsgBox pressed "a"

让我知道我是否犯了一些错误!

1 个答案:

答案 0 :(得分:1)

如果Window Spy无法检测到该窗口,则可以尝试以下操作:

FileDelete, %A_ScriptDir%\Test.txt
WinGet, id, list
Loop, %id%
{
    this_ID := id%A_Index%
    WinGetTitle, title, ahk_id %this_ID%
    If !InStr(title, "OneNote") 
        continue
    WinGetClass, class, ahk_id %this_ID%
    FileAppend, %title%`tahk_class %class%`n, %A_ScriptDir%\Test.txt
}
If FileExist(A_ScriptDir "\Test.txt")
    Run %A_ScriptDir%\Test.txt

编辑:

如果以此方式找到的标题包含“-OneNote ahk_class ApplicationFrameWindow”(如我在您的评论中看到的),则可以尝试:

SetTitleMatchMode, 2 ; Title can be part of the full title

#If WinActive("- OneNote ahk_class ApplicationFrameWindow", "OneNote")

    a::MsgBox pressed "a" in OneNote

#If  ; turn off context sensitivity

in this answer