문맥-감지 핫키와 핫스트링을 만듭니다. 문맥 감지 핫키는 표현식의 결과에 따라 다르게 조치를 수행합니다 (또는 아무것도 하지 않습니다).
#If Expression
유효한 표현식.
유효한 연산식이면 핫키가 활성화 될 문맥을 정의하는 데 사용할 수 있습니다. 예를 들어:
#If WinActive("ahk_class Notepad") or WinActive(MyWindowTitle) #Space::MsgBox You pressed Win+Spacebar in Notepad or %MyWindowTitle%.
#IfWin 지시어처럼, #If도 위치에 민감합니다: 스크립트에서 물리적으로 아래에 있는 모든 핫키와 핫스트링에 영향을 줍니다. #If 그리고 #IfWin는 또 상호 배타적입니다; 즉, 가장 최근의 #If 또는 #IfWin만 효과가 있습니다.
문맥 감지를 끄려면, 모든 매개변수를 생략하고 #If 또는 #IfWin 지시어를 지정하면 됩니다. 예를 들어:
#If
다른 지시어처럼, #If는 조건적으로 실행할 수 없습니다.
When the key, mouse or joystick button combination which forms a hotkey is pressed, the #If expression is evaluated to determine if the hotkey should activate.
Note: Scripts should not assume that the expression is only evaluated when the key is pressed (see below).
표현식은 프로그램이 핫키가 활성화되어 있는지 알 필요가 있을 때마다 평가될 수도 있습니다. 예를 들어, a & b::
와 같은 맞춤 조합에 대하여 #If 표현식은 접두 키가 (이 예제에서는 a
) 눌릴 때 평가되어, 맞춤 수식 키로 행위해야 할지 말지 결정합니다.
Note: Use of #If in an unresponsive script may cause input lag or break hotkeys (see below).
There are several more caveats to the #If directive:
[AHK_L 53+]: A_ThisHotkey와 A_TimeSinceThisHotkey는 현재 #If 표현식이 평가되고 있는 핫키에 기반하도록 설정됩니다.
[v1.0.95.00+]: A_PriorHotkey와 A_TimeSincePriorHotkey는 임시로 "This" 변수에 상응하는 이전의 값을 담고 있습니다.
#IfWin 지시어의 행위 특성은 대부분 #If에도 적용됩니다.
#IfTimeout을 사용하면 기본 시간제한 값을 바꿀 수 있습니다.
Allows the volume to be adjusted by scrolling the mouse wheel over the taskbar.
#If MouseIsOver("ahk_class Shell_TrayWnd") WheelUp::Send {Volume_Up} WheelDown::Send {Volume_Down} MouseIsOver(WinTitle) { MouseGetPos,,, Win return WinExist(WinTitle . " ahk_id " . Win) }
#If ActiveControlIsOfClass("Edit") ^BS::Send ^+{Left}{Del} ^Del::Send ^+{Right}{Del} ActiveControlIsOfClass(Class) { ControlGetFocus, FocusedControl, A ControlGet, FocusedControlHwnd, Hwnd,, %FocusedControl%, A WinGetClass, FocusedControlClass, ahk_id %FocusedControlHwnd% return (FocusedControlClass=Class) }
동적인 핫키. This example should be combined with example #1 before running it.
NumpadAdd:: Hotkey, If, MouseIsOver("ahk_class Shell_TrayWnd") if (doubleup := !doubleup) Hotkey, WheelUp, DoubleUp else Hotkey, WheelUp, WheelUp return DoubleUp: Send {Volume_Up 2} return