0

我有一个脚本,它或多或少地工作。

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

根据几个因素,程序显示两个屏幕之一。如果屏幕是 1 号,那么它应该只运行到最后(标题:10-2013 2013.06.17. Screen 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
}
4

1 回答 1

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 和部分标题来执行此操作

于 2013-06-17T12:06:36.250 回答