AutoHotKey(오토핫키) 설명서 #IfWinActive / #IfWinExist

Posted by 발전소장
2014. 8. 13. 18:25 AutoHotKey/Commands

#IfWinActive / #IfWinExist

hot key를 특정의 윈도우의 액티브/존재시만 유효하게 되도록(듯이) 설정한다

#IfWinActive [, WinTitle, WinText]
#IfWinExist [, WinTitle, WinText]
#IfWinNotActive [, WinTitle, WinText]
#IfWinNotExist [, WinTitle, WinText]

Parameters

인수명설명
WinTitle 윈도우 타이틀등의 조건을 지정.
윈도우 지정의 방법참조.
다만, 윈도우 타이틀과ahk_class,ahk_group, 그러한 복수 조건의 동시 지정만 유효.
ahk_id(와)과ahk_pid(은)는, 일단 기능하지만, 미리 알아 둘 수 없기 때문에 거의 의미가 없다.
「%VarName%」(와)과 같은 변수 참조는, 현재 사용할 수 없다.
다만, 장래의 확장을 위해서, 「%」기호는 「`%」(와)과 같이 이스케이프 해 두는 것.
WinText 윈도우에 포함되는 텍스트의 조건을 지정.
인수의 수가 늘려지기도 할 수 있으므로, 「,」(은)는 「`,」(와)과 같이 이스케이프 하는 것.

Remarks

이 지령이 기술된 부분에서(보다) 다음에 정의되는 hot key는, 기술된 조건에 일치하고 있을 때 마셔 유효하게 된다.
#IfWinActive그럼 지정 윈도우가 액티브때만,#IfWinExist그럼 지정 윈도우가 존재할 때 마셔,#IfWinNotActive그럼 지정 윈도우가 액티브하지 않을 때 마셔,#IfWinNotExist그럼 지정 윈도우가 존재하지 않을 때 마셔 유효하게 된다.

AltTabhot key(은)는 이러한 지령의 조건에 관계없이, 항상 유효하게 된다.

이러한 조건은, 마지막에 지정한 것 하나의 봐가 유효하게 된다.
「#IfWinActive」(와)과 같이 모든 인수를 생략 해 기술하면, 조건이 「조건 없음」이 된다.

조건 마다 같은 hot key에 다른 동작을 할당할 수 있다.

#IfWinActive ahk_class Notepad
^!c::MsgBox You pressed Control+Alt+C in Notepad.
#IfWinActive ahk_class WordPadClass
^!c::MsgBox You pressed Control+Alt+C in WordPad.
#IfWinActive
^!c::MsgBox You pressed Control+Alt+C in a window other than Notepad/WordPad.

「#IfWinActive ahk_class Notepad」와「#IfWinExist ahk_class Notepad」(와)과 같이, 복수의 동시에 성립 할 수 있는 조건에 액션을 설정해 두는 경우, 제일 최초로 설정된 조건부 액션이 우선된다.
일치하는 조건이 하나도 없는 경우, 「조건 없음」으로 설정된 액션이 실행된다.
「조건 없음」으로의 액션도 설정되어 있지 않은 경우, 그 키의 본래의 동작을 한다.(WindowsNT계만)

「Gosub,^!c」(와)과 같이 해 hot key 라벨에 직접 점프 하는 경우, 조건에 관계없이 스크립트의 제일 최초로 나타나는 hot key 라벨에 점프 한다.

스크립트 실행중에Hotkey커멘드를 사용하면, 스크립트의 최후로 지정되어 있던 조건하에서의 hot key 액션이 설정·변경된다.
「Hotkey,IfWinActive,ahk_class Notepad」(와)과 같이,IfWin...계 서브 커멘드로, 조건을 변경하거나 「조건 없음」으로 하거나 할 수 있다.

통상, 「a & b」(와)과 같은 콤비네이션 키를 지정해 있으면, 프리픽스 키(먼저 쓰여진 (분)편의 키)의 본래의 기능은 무효가 된다.
그러나, 그 키를 프리픽스로서 사용하는 콤비네이션 키가 모두 조건에 의해 무효가 되어 있을 때는, 그 키 본래의 동작을 한다.

IfWinActive및IfWinExist의 조건이 붙은 hot key 써브루틴이 실행될 때,LastFoundWindow(은)는 해당 윈도우로 설정된다.

Related

Hotkeys, Hotstrings, Suspend, Hotkey command, IfWinActive, IfWinExist, SetTitleMatchMode, DetectHiddenWindows

Examples

#IfWinActive ahk_class Notepad
^!a::MsgBox You pressed Ctrl-Alt-A while Notepad is active.  ; This hotkey will have no effect if pressed in other windows (and it will "pass through").
#c::MsgBox You pressed Win-C while Notepad is active.
::btw::This replacement text for "btw" will occur only in Notepad.
#IfWinActive
#c::MsgBox You pressed Win-C in a window other than Notepad.
#IfWinExist ahk_class Notepad
+#n::WinActivate
#IfWinExist
+#n::Run,notepad.exe