Вы не забывайте, окно может существовать, но при этом быть в скрытом состоянии, и
WinExists вернёт
1.
Иногда нужно проверять его “видимое” существование:
Код:
$hGUI = GUICreate("_WinExistsEx Example")
;WinSetState($hGUI, "", @SW_SHOW)
$iExists = _WinExistsEx($hGUI)
$iVisible = @extended
MsgBox(64, '_WinExistsEx', StringFormat("[%s]\n\nWin Exists:\t%i\nWin Is Visible:\t%i", WinGetTitle($hGUI), $iExists, $iVisible))
Func _WinExistsEx($sTitle, $sText="")
Local $iExists = WinExists($sTitle, $sText)
Local $iVisible = Number(BitAND(WinGetState($sTitle, $sText), 2) = 2)
Return SetExtended($iVisible, $iExists)
EndFunc