AHK WinActivate 无法排除

AHK WinActivate not able to exclude

我只想在 WinActivate 中排除 Google Chrome。我已经尝试了从完全限定 window 的标题到使用变量、字符串、none 的所有方法。它总是切换到 chrome,因为我打开了两个与字符串匹配的 windows——Chrome 和 Windows Explorer。我想切换到 windows 资源管理器。

Ticket_Out := "00123456"
xclude:= Ticket_Out . "00123456 | Salesforce - Google Chrome"

WinActivate % Ticket_Out,, xclude, ; doesn't work
WinActivate, "00123456",, "00123456 | Salesforce - Google Chrome", ; also doesn't work

我知道有一个 WinActivateBottom,但我真的想避免使用它。我真的只是希望排除工作。我的语法或命令有什么问题?

任何命令中的每个参数(除非另有说明)都使用旧语法。

WinActivate % Ticket_Out,, xclude,
WinActivate, "00123456",, "00123456 | Salesforce - Google Chrome",

在第一个参数中,您通过以 % 后跟 space 开始参数来正确强制第一个参数中的表达式。但是在第三个参数中,您再次使用旧语法并且只是输入 xclude。这将被解释为文字文本,而不是变量。也使用 % 和 space.

启动该参数

在第二个参数中,您再次没有对任何一个参数计算表达式,因此它们都被解释为文字文本。 包括引号。在旧语法中,您不引用字符串,因为默认情况下一切都已经是文字文本。

WinActivate, % Ticket_Out, , % xclude 
WinActivate, % "00123456", , % "00123456 | Salesforce - Google Chrome"

还删除了尾随的逗号。他们不属于那里。
现在它应该可以工作了,假设 window 标题和你的 title match mode 是有序的。


除了使用排除参数,您还可以在指定 window 标题时更加具体。
例如,您可以像这样使用 ahk_exe

WinActivate, % "Title Of My Window ahk_exe chrome.exe"

现在您只匹配来自名为 chrome.exe.

的进程的 windows

总的来说,您的问题主要来自于不知道遗留语法和现代表达式语法之间的区别。
这是一个很好的文档页面,可以帮助您了解差异:
https://www.autohotkey.com/docs/Language.htm