2017-08-11 502 views
2

AutoHotkey Beginner Tutorial包括一個sample script來演示窗口特定的熱鍵和熱點。ahk_class是什麼?我怎樣才能將它用於窗口匹配?

#IfWinActive ahk_class Notepad 
::msg::You typed msg in Notepad 
#IfWinActive 

#IfWinActive untitled - Paint 
::msg::You typed msg in MSPaint! 
#IfWinActive 

第二個例子非常明瞭:檢查名爲「untitled - Paint」的窗口。這是第一個使用ahk_class的例子,讓我感到困惑。

我還沒有找到AHK documentation中的變量的任何解釋。 According to an AHK forum post,ahk_class是Windows Spy給出的窗口的名稱,該帖子沒有詳細介紹。

使用ahk_class NotepadUntitled - Notepad會有什麼區別嗎?如果替換爲#IfWinActive ahk_class Paint,第二個示例是否可以工作?

ahk_class什麼是ahk_class?我怎樣才能將它用於窗口匹配?

+0

附加說明:我正在使用AutoHotkey的便攜版本,[它不包含WindowSpy](https://stackoverflow.com/questions/45552452/could-not-launch-file-au3-spy-exe) 。 –

回答

1

https://autohotkey.com/docs/misc/WinTitle.htm#ahk_class

窗口類是一組屬性的系統使用作爲模板來創建一個窗口。換句話說,窗口的類名標識了它是什麼類型的窗口。

換句話說,你可以用它來識別相同類型的窗口,如果你打開記事本的標題是Untitled - Notepad,如果你把它保存到temp.txt標題將成爲temp - Notepad。另一方面ahk_class將永遠保持Notepad

如果用#IfWinActive ahk_class MSPaintApp代替它,第二個示例將起作用,因爲這是mspaint的類。

通常情況下,您會發現ahk_class使用Window Spy,然後在您的腳本中使用它。如果你沒有Window Spy,你可以使用下面的快捷鍵:

#1::WinGetClass, Clipboard, A ; Will copy the ahk_class of the Active Window to clipboard 

後,你發現了它,你可以用它在任何地方,你可以使用窗口標題,例如,而不是寫WinActivate, Untitled - Notepad你可以寫WinActivate, ahk_class Notepad

+0

所以'ahk_class'正在尋找程序名稱,而不是窗口名稱。 –

+1

@StevenVascellaro它不完全是程序名稱,一個程序可以有不同類型的窗口,不同的程序有時可以具有相同的ahk_class。現在就把它想成程序名稱,然後用它來識別一個程序。 – Oleg

-1

檢查this文章。 Ahk_class是在您使用WindowSpy工具時爲您提供的類。該工具應與AutoHotkey可執行文件位於同一文件夾中。

+0

我在回答中特別引用了論壇帖子,說這沒有幫助。我的AutoHotkey版本[沒有WindowsSpy工具](https://stackoverflow.com/questions/45552452/could-not-launch-file-au3-spy-exe)。 –

相關問題