오토핫키(AutoHotkey)는 윈도우 환경에서 다양한 작업을 자동화할 수 있는 강력한 스크립트 언어입니다. 그 중 IfWinExist 함수는 특정 창이 존재하는지 확인하고, 이를 기반으로 조건부 작업을 수행하는 데 매우 유용합니다. 이번 블로그 포스트에서는 IfWinExist 함수의 기본 사용법부터 다양한 활용 방법까지 자세히 알아보겠습니다.
IfWinExist 함수 기초
기본 사용법
IfWinExist 함수는 지정된 창이 존재하는지 확인합니다. 창이 존재하면 참(True)을 반환하고, 그렇지 않으면 거짓(False)을 반환합니다. 기본 구문은 다음과 같습니다.
IfWinExist, 윈도우 제목
{
; 창이 존재할 때 실행할 코드
}
예제:
IfWinExist, Untitled - Notepad
{
MsgBox, 메모장이 실행 중입니다.
}
이 스크립트는 "Untitled - Notepad"라는 제목을 가진 메모장 창이 존재할 경우 "메모장이 실행 중입니다."라는 메시지 박스를 표시합니다.
창의 부분 일치
창 제목의 일부만으로 창을 찾을 수도 있습니다. 이는 창 제목이 동적으로 변하는 경우에 유용합니다.
예제:
IfWinExist, Notepad
{
MsgBox, 메모장이 실행 중입니다.
}
이 스크립트는 창 제목에 "Notepad"가 포함된 모든 창을 찾습니다.
클래스 이름으로 창 찾기
창의 클래스 이름을 사용하여 특정 창을 찾을 수도 있습니다. 클래스 이름은 더 정확한 식별을 제공합니다.
예제:
IfWinExist, ahk_class Notepad
{
MsgBox, 메모장이 실행 중입니다.
}
이 스크립트는 클래스 이름이 "Notepad"인 모든 창을 찾습니다.
변수 사용
변수를 사용하여 동적으로 창 제목이나 클래스 이름을 지정할 수 있습니다.
예제:
windowTitle := "Untitled - Notepad"
IfWinExist, %windowTitle%
{
MsgBox, %windowTitle% 창이 존재합니다.
}
이 스크립트는 변수 windowTitle에 저장된 값을 사용하여 창을 찾습니다.
다양한 활용법
창이 존재할 때 작업 수행
IfWinExist 함수를 사용하여 특정 창이 존재할 때만 특정 작업을 수행하도록 할 수 있습니다. 예를 들어, 특정 프로그램이 실행 중일 때만 키 입력을 자동화할 수 있습니다.
예제:
IfWinExist, Untitled - Notepad
{
WinActivate ; 메모장을 활성화
Send, Hello, Notepad!
}
else
{
MsgBox, 메모장이 실행 중이 아닙니다.
}
이 스크립트는 "Untitled - Notepad" 창이 존재할 경우 해당 창을 활성화하고 "Hello, Notepad!"를 입력합니다. 창이 존재하지 않으면 메시지 박스를 표시합니다.
반복 확인
반복문과 IfWinExist 함수를 결합하여 창이 존재하는지 주기적으로 확인할 수 있습니다.
예제:
Loop
{
IfWinExist, Untitled - Notepad
{
MsgBox, 메모장이 실행 중입니다.
break ; 루프 종료
}
Sleep, 1000 ; 1초 대기
}
이 스크립트는 "Untitled - Notepad" 창이 존재할 때까지 1초 간격으로 반복 확인합니다.
특정 조건에서 창 닫기
IfWinExist 함수를 사용하여 특정 조건에서 창을 닫을 수 있습니다.
예제:
IfWinExist, Untitled - Notepad
{
WinClose ; 메모장 창 닫기
MsgBox, 메모장이 닫혔습니다.
}
else
{
MsgBox, 메모장이 실행 중이 아닙니다.
}
이 스크립트는 "Untitled - Notepad" 창이 존재할 경우 해당 창을 닫고 메시지 박스를 표시합니다.
고급 활용법
여러 창 확인
여러 개의 창을 확인하고 각각의 창에 대해 다른 작업을 수행할 수 있습니다.
예제:
IfWinExist, Untitled - Notepad
{
MsgBox, 메모장이 실행 중입니다.
}
else IfWinExist, Calculator
{
MsgBox, 계산기가 실행 중입니다.
}
else
{
MsgBox, 메모장과 계산기가 실행 중이 아닙니다.
}
이 스크립트는 "Untitled - Notepad"와 "Calculator" 창을 확인하고, 각각의 경우에 다른 메시지 박스를 표시합니다.
시간 제한 대기
특정 시간 동안만 창이 존재하는지 확인하고, 시간 내에 창이 나타나지 않으면 다른 작업을 수행할 수 있습니다.
예제:
timeout := 5000 ; 5초
startTime := A_TickCount
Loop
{
IfWinExist, Untitled - Notepad
{
MsgBox, 메모장이 실행 중입니다.
break
}
if (A_TickCount - startTime > timeout)
{
MsgBox, 메모장이 실행 중이 아닙니다.
break
}
Sleep, 100 ; 0.1초 대기
}
이 스크립트는 5초 동안 "Untitled - Notepad" 창이 나타나는지 확인하고, 나타나지 않으면 메시지 박스를 표시합니다.
IfWinNotExist
IfWinExist 함수의 반대 기능을 수행하는 IfWinNotExist 함수도 있습니다. 이 함수는 창이 존재하지 않을 때 조건을 만족합니다.
예제:
IfWinNotExist, Untitled - Notepad
{
MsgBox, 메모장이 실행 중이 아닙니다.
}
else
{
MsgBox, 메모장이 실행 중입니다.
}
이 스크립트는 "Untitled - Notepad" 창이 존재하지 않을 경우 메시지 박스를 표시합니다.
결론
오토핫키의 IfWinExist 함수는 특정 창이 존재하는지 확인하고 조건부 작업을 수행하는 데 매우 유용한 도구입니다. 이번 글에서는 IfWinExist 함수의 기본 사용법부터 창이 존재할 때 작업 수행, 반복 확인, 고급 활용 방법 등을 알아보았습니다. 이를 통해 여러분의 스크립트를 더욱 유연하고 효율적으로 만들어 보세요.
'오토핫키 > 오토핫키 명령어' 카테고리의 다른 글
오토핫키 - WinMove (0) | 2024.08.29 |
---|---|
오토핫키- FileAppend (0) | 2024.06.29 |
오토핫키 - Sleep (0) | 2024.06.28 |
오토핫키 - Send (0) | 2024.06.27 |
오토핫키를 - MsgBox (0) | 2024.06.26 |