IfWinExist / IfWinNotExist / WinExist

부합하는 창이 존재하는지 점검합니다. WinExist()는 첫 번째로 부합하는 창의 Unique ID (HWND)를 돌려줍니다.

IfWinExist [, WinTitle, WinText,  ExcludeTitle, ExcludeText]
IfWinNotExist [, WinTitle, WinText, ExcludeTitle, ExcludeText]
UniqueID := WinExist("WinTitle", "WinText", "ExcludeTitle", "ExcludeText")
선택

매개변수

UniqueID

주어진 기준에 부합하는 첫 번째 창의 Unique ID (HWND) (십육진 정수)

WinTitle

목표 창을 식별하는 창 제목 또는 다른 기준. WinTitle 참조.

WinText

존재하면, 이 매개변수는 목표 창 텍스트의 부문자열입니다 (Window Spy 유틸리티에 노출됨). 숨은 텍스트는 DetectHiddenText가 켜져 있으면(ON) 탐지됩니다.

ExcludeTitle

제목에 이 값이 있는 창은 제외합니다. 주의: 하위 호환의 문제 때문에, IfWinExistIfWinNotExist는 명령어의 이름에 정확하게 부합하면 이 매개변수를 명령어로 이해합니다. 이를 우회하려면, 대신에 WinExist() 함수를 사용하십시오.

ExcludeText

텍스트에 이 값이 없는 창은 무시합니다.

논평

모든 매개변수가 생략되면, 마지막 발견 창을 점검하여 여전히 존재하는지 (IfWinNotExist이라면 존재하지 않는지) 알아 봅니다.

이 명령어 중 하나라도 부합하는 창이 있다는 것을 알게 되면, 마지막 발견 창이 그 창으로 갱신됩니다. 즉, IfWinExist가 참으로 평가되거나 IfWinNotExist가 거짓으로 평가되면, 마지막 발견 창이 갱신됩니다.

함수 WinExist()는 첫 번째로 부합하는 창의 Unique ID (HWND)를 (없으면 0) 돌려줍니다. 0-아닌 모든 숫자는 참("true")으로 간주되므로, 다음 서술문 if WinExist("WinTitle")WinTitle이 존재하면 참입니다.

콘트롤의 HWND를 발견하려면 (Post/SendMessage 또는 DllCall에 사용하기 위해), ControlGet Hwnd 또는 MouseGetPos를 사용하십시오.

SetWinDelayIfWinExist/IfWinActive에 적용되지 않습니다.

창 제목과 텍스트는 대소문자에 민감합니다. 숨은 창은 DetectHiddenWindows가 켜져 있으면 탐지됩니다.

관련 항목

IfWinActive, SetTitleMatchMode, DetectHiddenWindows, 마지막 발견 창, Process, WinActivate, WinWaitActive, WinWait, WinWaitClose, #IfWinActive/Exist

예제

; 예제 1
IfWinExist, Untitled - Notepad
{
    WinActivate  ; 위에서 발견한 창을 자동으로 사용합니다.
    WinMaximize  ; 위와 같습니다
    Send, Some text.{Enter}
    return
}

; 예제 2
IfWinNotExist, Calculator
    return
else
{
    WinActivate  ; 위의 "IfWinNotExist"는 또 "마지막 발견 창"을 갱신해 줍니다.
    WinMove, 40, 40  ; 새로운 위치로 이동합니다.
    return
}

; 예제 3
if WinExist("ahk_class Notepad") or WinExist("ahk_class" . ClassName)
    WinActivate  ; 마지막으로 발견된 창을 사용합니다.

MsgBox % "The active window's ID is " . WinExist("A")

; 예제 4: 다음과 동등합니다: IfWinNotExist, Calculator
If !WinExist("Calculator")
    return
선택 | 내려받기