如何在AutoHotKey中将窗口标题传递给用户函数

时间:2013-11-06 15:46:56

标签: autohotkey

我想将窗口标题传递给我在AutoHotKey中编写的函数,窗口标题WinTitle是一个字符串吗?我有4个窗口标题,我需要将它们传递给同一个函数。

Extract(my_window_title) {
; Wake and select the correct window to be in focus
WinWait, my_window_title, 
IfWinNotActive, my_window_title, , WinActivate, my_window_title, 
WinWaitActive, my_window_title,
; ... do a bunch of things
}

我像这样调用函数

title1 = "Some title"
Extract(title1) 

我也尝试将%放在所有变量

2 个答案:

答案 0 :(得分:2)

是的WinTitle基本上是一个字符串。 看看你的Autohotkey文件夹,应该有一个名为“AU3_Spy.exe”的文件。用它来查找窗口标题。

正如Elliot DeNolf已经提到的那样,你在变量方面犯了一些错误。您还应该再看一下IfWInNotActive的语法。 这应该有效:

Extract(my_window_title) {
    ; Wake and select the correct window to be in focus
    WinWait, %my_window_title%
    IfWinNotActive, %my_window_title%
    {
        WinActivate, %my_window_title%
        WinWaitActive, %my_window_title%
    }
    msgbox, %my_window_title%
    ; ... do a bunch of things
}

title1 = MyWindowTitle
Extract(title1) ;functions always expect variables, no percent-signs here

答案 1 :(得分:1)

有些事情看起来像是在您的脚本中造成问题。

分配字符串值并使用=时,不需要引号。如果您使用:=分配值,则需要引号。这两行是等价的:

    title1 := "Some Title"
    title1 = Some Title

一旦通过函数调用这些值,即。必须使用Extract(title1)%个符号(正如您在问题末尾提到的那样)。这可以通过两种方式调用:

    WinActivate, %my_window_title%
    WinActivate, % my_window_title

如果标题无效,您的脚本将无限期地在WinWaitWinWaitActive上等待。我建议您使用timeout value,然后检查ErrorLevel,看看它是否成功。