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

Various commands, functions and control flow statements have a WinTitle parameter, used to identify which window (or windows) to operate on. 이 매개변수는 창의 제목 또는 제목 일부일 수도 있고 이 페이지에 기술된 다른 기준일 수도 있습니다.

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

부합 행위

SetTitleMatchMode은 각 창의 제목에 부분 또는 전체 제목을 어떻게 비교할지 제어합니다. 설정에 따라, WinTitle은 정화하게 일치하는 제목이 될 수도 있고, 아니면 제목에 어디에나 나타나는 부문자열, 또는 RegEx 패턴이 될 수 있습니다. This setting also controls whether the ahk_class and ahk_exe criteria are interpreted as RegEx patterns.

Window titles are case sensitive, except when using the i) modifier in a RegEx pattern.

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

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

A (활성 창)

Use the letter A for WinTitle and omit the other three window parameters (WinText, ExcludeTitle and ExcludeText), to operate on the active window.

The following example retrieves and reports the unique ID (HWND) of the active window:

MsgBox % WinExist("A")

The following example creates a hotkey which can be pressed to maximize the active window:

#Up::WinMaximize, A  ; Win+Up

ahk_ Criteria

Specify one or more of the following ahk_ criteria (optionally in addition to a window's title). An ahk_ criterion always consists of an ahk_ keyword and its criterion value, both separated by zero or more spaces or tabs. For example, ahk_class Notepad represents a Notepad window.

The ahk_ keyword and its criterion value do not need to be separated by spaces or tabs. This is primarily useful when specifying ahk_ criteria as expressions in combination with variables. For example, you could specify "ahk_pid" PID instead of "ahk_pid " PID. In all other cases, however, it is recommended to use at least one space or tab as a separation to improve readability.

ahk_class (창 클래스)

Use ahk_class ClassName in WinTitle to identify a window by its window class.

창 클래스는 시스템이 창을 생성하기 위하여 주형틀로 사용하는 속성의 집합입니다. 다른 말로, 창의 클래스 이름은 어떤 유형의 창인지 식별합니다. A window class can be revealed via Window Spy or retrieved by WinGetClass. If the RegEx title matching mode is active, ClassName accepts a regular expression.

The following example activates a console window (e.g. cmd.exe):

WinActivate, ahk_class ConsoleWindowClass

The following example does the same as above, but uses a regular expression (note that the RegEx title matching mode must be turned on beforehand to make it work):

WinActivate, ahk_class i)^ConsoleWindowClass$

ahk_id (유일한 ID/HWND)

Use ahk_id HWND in WinTitle to identify a window or control by its unique ID.

각 창이나 콘트롤에 유일한 ID가 있습니다. 이를 HWND (Handle to WiNDow)라고도 합니다. 이 ID를 사용하면 제목이 변해도 창이나 콘트롤을 식별할 수 있습니다. 창의 ID는 전형적으로 WinExist()WinGet을 통하여 열람합니다. 콘트롤의 ID는 전형적으로 ControlGet Hwnd, MouseGetPos, 또는 DllCall()을 통하여 열람합니다. Also, the ahk_id criterion will operate on controls even if they are hidden; that is, the setting of DetectHiddenWindows does not matter for controls.

The following example activates a window by a unique ID stored in VarContainingID:

WinActivate, ahk_id %VarContainingID%

ahk_pid (프로세스 ID)

Use ahk_pid PID in WinTitle to identify a window belonging to a specific process. 프로세스 식별자 (PID)는 전형적으로 WinGet, Run 또는 Process으로 열람합니다. The ID of a window's process can be revealed via Window Spy.

The following example activates a window by a process ID stored in VarContainingPID:

WinActivate, ahk_pid %VarContainingPID%

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

Use ahk_exe ProcessNameOrPath in WinTitle to identify a window belonging to any process with the given name or path.

While the ahk_pid criterion is limited to one specific process, the ahk_exe criterion considers all processes with name or full path matching a given string. If the RegEx title matching mode is active, ProcessNameOrPath accepts a regular expression which must match the full path of the process. Otherwise, it accepts a case-insensitive name or full path; for example, ahk_exe notepad.exe covers ahk_exe C:\Windows\Notepad.exe, ahk_exe C:\Windows\System32\Notepad.exe and other variations. The name of a window's process can be revealed via Window Spy.

The following example activates a Notepad window by its process name:

WinActivate, ahk_exe notepad.exe

The following example does the same as above, but uses a regular expression (note that the RegEx title matching mode must be turned on beforehand to make it work):

WinActivate, ahk_exe i)\\notepad\.exe$  ; Match the name part of the full path.

ahk_group (창 그룹)

Use ahk_group GroupName in WinTitle to identify a window or windows matching the rules contained by a previously defined window group.

WinMinimize, WinMaximize, WinRestore, WinHide, WinShow, WinClose, and WinKill will act on all the group's windows. By contrast, other window commands, functions and control flow statements such as WinActivate, WinExist() and IfWinExist will operate only on the topmost window of the group.

The following example activates any window matching the criteria defined by a window group:

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

; 위의 기준에 부합하는 창은 모두 활성화합니다
WinActivate, ahk_group Explorer

다중 기준

By contrast with the ahk_group criterion (which broadens the search), the search may be narrowed by specifying more than one criterion within the WinTitle parameter. 다음 예제에서, 스크립트는 제목에 My File.txt이 포함되어 있고 그리고 그의 클래스가 Notepad인 창을 기다립니다:

WinWait My File.txt ahk_class Notepad
WinActivate  ; 발견된 창을 활성화합니다.

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

The ahk_id criterion can be combined with other criteria to test a window's title, class or other attributes:

MouseGetPos,,, id
if WinExist("ahk_class Notepad ahk_id " id)
    MsgBox 마우스가 노트패드 위에 있습니다.

마지막으로 발견된 창

이것은 다음이 가장 마지막으로 발견한 창입니다: IfWinExist, IfWinNotExist, WinExist(), IfWinActive, IfWinNotActive, WinActive(), WinWaitActive, WinWaitNotActive, 또는 WinWait. It can make scripts easier to create and maintain since WinTitle and WinText of the target window do not need to be repeated for every windowing command, function or control flow statement. 게다가, 스크립트의 수행성능도 더 좋아집니다. 왜냐하면 목표 창을 처음 발견하면 그 다음부터는 반복해서 검색할 필요가 없기 때문입니다.

The last found window can be used by all of the windowing commands, functions and control flow statements except WinWait, WinActivateBottom, GroupAdd, WinGet Count, and WinGet List. 사용하려면, 그냥 네 개의 창 매개변수를 생략하면 됩니다 (WinTitle, WinText, ExcludeTitle, 그리고 ExcludeText).

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

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

The following example opens Notepad, waits until it exists and activates it:

Run Notepad
WinWait Untitled - Notepad
WinActivate ; Use the window found by WinWait.

The following example activates and maximizes the Notepad window found by WinExist():

if WinExist("Untitled - Notepad")
{
    WinActivate ; Use the window found by WinExist.
    WinMaximize ; 위와 동일.
    Send, Some text.{Enter}
}

The following example activates the calculator found by WinExist() and moves it to a new position:

if not WinExist("Calculator")
{
    ; ...
}
else
{
    WinActivate ; Use the window found by WinExist.
    WinMove, 40, 40 ; 위와 동일.
}