我有一个脚本,它或多或少有效。
我启动了一个程序并按了一些键。
根据几个因素,程序会显示两个屏幕中的一个。 如果屏幕是数字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
}
答案 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以及部分标题
来完成此操作