我想将窗口标题传递给我在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)
我也尝试将%
放在所有变量
答案 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
如果标题无效,您的脚本将无限期地在WinWait
和WinWaitActive
上等待。我建议您使用timeout value,然后检查ErrorLevel
,看看它是否成功。