如何检查 WinActivate 是否成功?

How can I check if WinActivate succeeded?

我有一个麻烦的应用程序,在使用 WinActivate 时有时无法激活。如果有打开的对话提示或弹出窗口 window.

,通常会发生这种情况

为了防止意外输入错误,我想验证window是否已经激活。理想情况下,我想在 WinActivate 失败时抛出错误,例如以下伪代码:

If !WinActivate, Calculator  ; pseudo code
   MsgBox 'Calculator' not found. Stopping script...
   Exit, 1
}

据我所知,WinActive 没有 return 任何值,这意味着我无法直接检查它是否成功

如何检查 WinActivate 是否成功?

这会尝试激活一个 window 并在 2 秒内未成功时抱怨

WinActivate windowTitle
WinWaitActive windowTitle, , 2
if ErrorLevel
{
  MsgBox 'windowTitle' not found. Stopping script...
  Exit  1
}

包含在通用函数中的相同代码

F2::activate( "Untitled - Notepad" )

activate(title)
{
  WinActivate %title%
  WinWaitActive %title%, , 2
  if ErrorLevel
  {
    MsgBox '%title%' not found. Stopping script...
    Exit  1
  }
}