如何在AutoHotKey中的条件中检查两个变量

时间:2013-06-17 11:53:04

标签: autohotkey

我有一个脚本,它或多或少有效。

我启动了一个程序并按了一些键。

根据几个因素,程序会显示两个屏幕中的一个。 如果屏幕是数字1,那么它应该只运行到最后(标题:10-2013 2013.06.17。屏幕x)。 如果屏幕是2号,那么它应该按另一个键,然后运行到最后(标题:10-2013 2013.06.17。屏幕y)。

屏幕标题不是简单的标题,但它们取决于某些输入,所以这是我尝试过的:

SetTitleMatchMode 2
; Wait for any of the two screens
WinWait,%5%-%1% - %2% - Screen

; If it is the second screen
MyTitle = %5%-%1% - %2% - Screen y

WinGetActiveTitle,title
If(title = MyTitle)
{
    ControlSend,Static39,{Esc},%5%-%1% - %2% - Screen y
    Sleep 2000
}

; Here are the common part again    
ExitProgram:

条件不起作用。如果我像上面那样尝试它就不会进入这个状态。如果我使用%title%,则表示“变量名称10-2013 2013.06.17中的无效字符。屏幕y”。

解决方案

基于罗伯特的回答

SetTitleMatchMode 2
WinWait,%5%-%1% - %2% - Screen

IfWinExist %5%-%1% - %2% - Screen y
{
    ControlSend,Static39,{Esc},%5%-%1% - %2% - Screen y
    Sleep 2000
}

1 个答案:

答案 0 :(得分:0)

要检查多个窗口,请使用ahk_group,如下所示:

GroupAdd, GroupName, ahk_class AutoHotKey
GroupAdd, GroupName, ahk_class CalcFrame

WinWait, ahk_group GroupName

然后单独检查每个窗口

IfWinExists, ahk_class AutoHotKey
{
 WinActivate
 Do your thing
}
Else IfWinExists, ahk_class CalcFrame
{
 WinActivate
 Do your thing
}
Return

您可以使用SetTitleMatchMode,2以及部分标题

来完成此操作