WinTitle 매개변수 & 가장 마지막으로 발견된 창

많은 명령어와 몇몇 함수는 WinTitle 매개변수가 있습니다. 이 매개변수는 작업할 창을 식별하는 데 사용됩니다. 이 매개변수는 창의 제목 또는 제목 일부일 수도 있고 이 페이지에 기술된 다른 기준일 수도 있습니다.

간편 참조
Title부합 행위
A활성 창
ahk_class창 클래스
ahk_id유일한 ID/HWND
ahk_pid프로세스 ID
ahk_exe프로세스 이름/경로
ahk_group창 그룹
 다중 기준
(All empty)마지막으로 발견된 창

부합 행위

SetTitleMatchMode은 각 창의 제목에 부분 또는 전체 제목을 어떻게 비교할지 제어합니다. 설정에 따라, WinTitle은 정화하게 일치하는 제목이 될 수도 있고, 아니면 제목에 어디에나 나타나는 부문자열, 또는 RegEx 패턴이 될 수 있습니다. 이 설정은 또 ahk_class를 정확한 클래스 이름으로 이해할지 아니면 RegEx 패턴으로 이해할지 제어합니다.

숨은 창은 DetectHiddenWindows이 켜져 있을 때만 탐지됩니다. 언제나 숨을 참을 탐지하는 WinShow는 제외합니다.

여러 창이 WinTitle과 기타 기준에 부합하면, 가장 위에 부합한 창이 사용됩니다. 활성 창이 기준에 부합하면, 보통 다른 모든 창보다 위에 있기 때문에 우선 순위를 갖습니다. 그렇지만, 항상 최상단 창이 부합하면 (그리고 활성 창은 최상단 창이 아니면), 대신에 그것이 사용됩니다.

활성 창 (A)

WinTitle이 기호 A이고 다른 세 개의 창 매개변수가 비어 있거나 생략되면, 그 활성 창이 사용됩니다 (WinText, ExcludeTitle 그리고 ExcludeText).

; 활성 창의 ID/HWND를 열람합니다
id := WinExist("A")
MsgBox % id

; Win+&uarr을 눌러; 활성 창을 최대화합니다
#Up::WinMaximize, A
선택 | 내려받기

ahk_class 창 클래스

창 클래스는 시스템이 창을 생성하기 위하여 주형틀로 사용하는 속성의 집합입니다. 다른 말로, 창의 클래스 이름은 어떤 유형의 창인지 식별합니다. 창 클래스를 사용하려면, Window Spy가 보여주는 것처럼 ahk_class ExactClassName를 사용하십시오. ExactClassNameWinGetClass로 열람할 수 있습니다.

RegEx 제목 부합 모드가 켜져 있으면, ahk_class는 정규 표현식을 받습니다.

; 콘솔 창을 활성화합니다 (예, cmd.exe)
WinActivate, ahk_class ConsoleWindowClass
선택 | 내려받기

ahk_id Unique ID / HWND

각 창이나 콘트롤에 유일한 ID가 있습니다. 이를 HWND (Handle to WiNDow)라고도 합니다. 이 ID를 사용하면 제목이 변해도 창이나 콘트롤을 식별할 수 있습니다. 창의 ID는 전형적으로 WinExist()WinGet을 통하여 열람합니다. 콘트롤의 ID는 전형적으로 ControlGet Hwnd, MouseGetPos, 또는 DllCall을 통하여 열람합니다. 또한, ahk_id는 콘트롤이 보이지 않아도 작동합니다; 즉, DetectHiddenWindows 설정은 콘트롤에 문제가 되지 않습니다.

WinActivate, ahk_id %VarContainingID%
선택 | 내려받기

ahk_pid 프로세스 ID

ahk_pid를 사용하면 특정 프로세스에 속한 창을 식별할 수 있습니다. 프로세스 식별자 (PID)는 전형적으로 WinGet, Run 또는 Process으로 열람합니다.

WinActivate, ahk_pid %VarContainingPID%
선택 | 내려받기

ahk_exe 프로세스 이름/경로 [v1.1.01+]

ahk_exe를 사용하면 주어진 경로나 이름의 프로세스에 속한 창을 식별할 수 있습니다.

ahk_pid는 특정한 프로세스 하나로 제한되는 반면에, ahk_exe는 주어진 문자열에 부합하는 이름 또는 전체 경로를 가진 모든 프로세스를 고려합니다. RegEx 제목 일치 모드가 켜져 있다면, ahk_exe는 정규 표현식을 받습니다. 그렇지 않으면, ahk_exe는 대소문자를 구분하는 이름이나 전체 경로를 받습니다; 예를 들어, ahk_exe notepad.exeahk_exe C:\Windows\Notepad.exe, ahk_exe C:\Windows\System32\Notepad.exe 그리고 기타 변종들을 포괄합니다.

; 기존의 notepad.exe 창을 활성화하거나, 새로 엽니다
if WinExist("ahk_exe notepad.exe")
    WinActivate, ahk_exe notepad.exe
else
    Run, notepad.exe
선택 | 내려받기

ahk_group 창 그룹

ahk_group을 사용하면 이전에 정의된 창 그룹에 포함된 규칙에 부합하는창을 식별할 수 있습니다.

WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose, 그리고 WinKill 명령어는 모든 그룹 창에 작동합니다. 대조적으로, WinActivateIfWinExist 같은 다른 창 명령어는 그룹의 최상위 창에만 작동합니다.

; 그룹을 정의합니다: 윈도우즈 탐색기 창
GroupAdd, Explorer, ahk_class ExploreWClass ; 비스타 이후에 사용안됨
GroupAdd, Explorer, ahk_class CabinetWClass

; 위의 기준에 부합하는 창은 모두 활성화합니다
WinActivate, ahk_group Explorer
선택 | 내려받기

다중 기준

(검색을 확대하는) ahk_group과 대조적으로, WinTitle 매개변수 안에 하나 이상의 기준을 특정해 검색의 범위를 좁힐 수 있습니다. 다음 예제에서, 스크립트는 제목에 My File.txt이 포함되어 있고 그리고 그의 클래스가 Notepad인 창을 기다립니다:

WinWait My File.txt ahk_class Notepad
WinActivate  ; 발견된 창을 활성화합니다.
선택 | 내려받기

이 모드를 사용할 때, 제목 텍스트를 (원하는 순서대로) 제일 먼저 나열해야 하고, 다음에 하나 이상의 기준이 따라 와야 합니다. 첫 번째 기준 이후로는 서로 정확하게 하나의 스페이스나 탭으로 갈라야 합니다 (다른 스페이스나 탭은 이전 기준의 기호 그대로의 부분으로 취급됩니다).

ahk_id를 다른 기준과 조합해 창 제목, 클래스 또는 기타 특성을 테스트할 수 있습니다:

MouseGetPos,,, id
if WinExist("ahk_class Notepad ahk_id " id)
    MsgBox 마우스가 노트패드 위에 있습니다.
선택 | 내려받기

"가장 마지막으로 발견된" 창

이것은 다음이 가장 마지막으로 발견한 창입니다: IfWin[Not]Exist, WinExist(), IfWin[Not]Active, WinActive(), WinWait[Not]Active, 또는 WinWait.

스크립트를 쉽게 만들고 관리할 수 있습니다. 왜냐하면 목표 창의 WinTitle과 WinText가 매 창 명령어마다 반복될 필요가 없기 때문입니다. 게다가, 스크립트의 수행성능도 더 좋아집니다. 왜냐하면 목표 창을 처음 발견하면 그 다음부터는 반복해서 검색할 필요가 없기 때문입니다.

"가장 마지막에 발견된" 창은 WinWait, WinActivateBottom, 그리고 GroupAdd를 제외하고 다른 모든 창 관련 명령어가 사용할 수 있습니다. 사용하려면, 그냥 네 개의 창 매개변수를 생략하면 됩니다 (WinTitle, WinText, ExcludeTitle, 그리고 ExcludeText).

쓰레드마다 자신의 "마지막으로 발견된" 창의 값을 유지합니다. 즉, 현재 쓰레드 또다른 쓰레드에 의해 인터럽트 되더라도, 원래 쓰레드가 재개할 때 인터럽트한 쓰레드의 것이 아니라 여전히 원래의 "마지막으로 발견된" 창의 값을 가진다는 뜻입니다..

마지막으로 발견된 창이 보이지 않는 Gui 창이면, DetectHiddenWindows가 꺼져 있더라도 사용할 수 있습니다. 이것은 종종 Gui +LastFound와 함께 조합해서 사용됩니다.

Run Notepad
WinWait Untitled - Notepad
WinActivate  ; 가장 마지막에 발견된 창을 사용합니다.

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

IfWinNotExist, Calculator
    return
else
{
    WinActivate  ; 위의 "IfWinNotExist"는 또  "가장 마지막 발견" 창을 설정합니다.
    WinMove, 40, 40  ; 새 위치로 이동합니다.
    return
}
선택 | 내려받기