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

Posted by 발전소장
2014. 8. 14. 01:19 AutoHotKey/Commands

IfWinActive / IfWinNotActive

조건에 일치하는 윈도우가 존재할지로 분기

IfWinActive [, WinTitle, WinText,  ExcludeTitle, ExcludeText]
IfWinNotActive [, WinTitle, WinText, ExcludeTitle, ExcludeText]
hwnd:=WinActive("WinTitle", "WinText", "ExcludeTitle", "ExcludeText")

Parameters

인수명설명
WinTitle 윈도우 타이틀 등.
윈도우 지정의 방법참조.
WinText 윈도우에 포함되는 텍스트
ExcludeTitle 제외 타이틀
ExcludeText 제외 텍스트

Remarks

IfWinActive하지만 진이었다고 나무나IfWinNotActive하지만 가짜였다고 와, 조건에 일치한 윈도우는LastFoundWindow(으)로서 기억된다.

편입 함수WinActive()(은)는, 해당 윈도우가 액티브한 때, 그 윈도우의 핸들을 돌려준다.

Related

SetTitleMatchMode, DetectHiddenWindows, Last Found Window, IfWinExist, WinActivate, WinWaitActive, WinWait, WinWaitClose

Example(s)

IfWinActive, Untitled - Notepad
{
	WinMaximize, A  ; "A" indicates the active window.
	Send, Some text.{Enter}
	return
}


AutoHotKey(오토핫키) 설명서 IfMsgBox

Posted by 발전소장
2014. 8. 14. 01:19 AutoHotKey/Commands

IfMsgBox

제일 최근의MsgBox커멘드로 지정한 버튼이 밀렸는지로 분기

IfMsgBox, ButtonName 

Parameters

인수명설명
ButtonName 조사하고 싶은 버튼명.Remarks참조.

Remarks

ButtonName에는 이하의 것을 지정한다

Yes
No
아니오
OK
OK
Cancel
캔슬
Abort
중지
Ignore
무시
Retry
재시행
Continue
속행
TryAgain
재시행
Timeout
타임 아웃 할 때까지 버튼이 밀리지 않았다

Related

MsgBox

Example(s)

MsgBox, 4, , Would you like to continue?, 5  ; 5-second timeout.
IfMsgBox, No
	Return  ; User pressed the "No" button.
IfMsgBox, Timeout
	Return ; i.e. Assume "No" if it timed out.
; Otherwise, continue:
...


AutoHotKey(오토핫키) 설명서 If var is [not] type

Posted by 발전소장
2014. 8. 14. 01:19 AutoHotKey/Commands

If var is [not] type

지정한 변수에 격납되고 있는 데이터가 특정의 형태인지 어떤지로 분기

if var is type
if var is not type

Parameters

인수명설명
var 변수명
type 변수의 형명(Remarks참조)

Remarks

Supported Types
integer 소수점을 포함하지 않는다10진수치나, 「0x」(으)로 시작된다16진수치.
전후에 반각 스페이스를 포함하는 것 안개+부호로 시작되는 것도 가능.
float 소수점을 포함한다10진수치.
전후에 반각 스페이스를 포함하는 것이나,+부호로 시작되는 것, 소수점으로부터 시작되는 것도 가능.
number integer인가float에 해당하는 것
digit 0...9만으로 구성되는 숫자.전후의 공백도 용서된다.
xdigit 0...9a...f(으)로 구성된다16진수치.대문자에서도 소문자라도 좋다.전후의 공백도 용서된다.
alpha a...zA...Z(으)로부터 되는 알파벳열.
upper A...Z(으)로부터 되는 대문자 알파벳열.
lower a...z(으)로부터 되는 소문자 알파벳열.
alnum a...zA...z0...9의 영숫자열.
space 반각 스페이스인가Tab문자, 개행(CR(이)나LF)등의 공백 문자만
time YYYYMMDDHH24MISS의 타임 스탬프 형식으로서 올바르다14자리수까지의 숫자열.
「2004」(와)과 같은 도중까지의 값으로도 가능.
MM의 부분이01..12의 범위가 아닌 등 일자 시각으로서 잘못하고 있는 것은 불가.
타임 스탬프로 간주해지는 범위는,1601해부터9999해까지.

time이외의 형식은, 내용이 하늘에서도 일치로 간주해진다.

Related

%A_Year%, SetFormat, FileGetTime, IfEqual, StringLen, IfInString, StringUpper, EnvAdd, Blocks, Else

Example(s)

if var is float
	MsgBox, %var% is a floating point number.
else if var is integer
	MsgBox, %var% is an integer.
if var is time
	MsgBox, %var% is also a valid date-time.


AutoHotKey(오토핫키) 설명서 IfInString / IfNotInString

Posted by 발전소장
2014. 8. 14. 01:18 AutoHotKey/Commands

IfInString / IfNotInString

변수내로 지정 문자열이 있을지로 분기

IfInString, var, SearchString 
IfNotInString, var, SearchString 

Parameters

인수명설명
var 변수명
SearchString 찾는 문자열

Remarks

공백 문자를 찾고 싶을 때는,%A_Space%(이)나%A_Tab%(을)를 사용하면 좋다.

이 커멘드의 후에는, 「,」(으)로 단락지어 조건에 일치했을 때에 실행시키고 싶은 커멘드를 기술할 수 있다.
이하의3개는 모두 올바르다.

IfInString, MyVar, abc
	Gosub, Process1
IfInString, MyVar, abc, Gosub, Process1
IfInString, MyVar, abc,{
	Gosub, Process1
}

통상은 대문자 소문자를 구별하지 않는다.
StringCaseSense그리고 설정을 변경할 수 있다.

Related

StringCaseSense, IfEqual, Blocks, Else, if var is type

Example(s)

Haystack = abcdefghijklmnopqrs
Needle = abc
IfInString, Haystack, %Needle%
{
	MsgBox, The string was found.
	return
}
else
	Sleep, 1


AutoHotKey(오토핫키) 설명서 If var [not] in values / If var [not] contains values

Posted by 발전소장
2014. 8. 14. 01:18 AutoHotKey/Commands

If var [not] in values / If var [not] contains values

변수의 값이 열거했지만 우리 어떤 것일까하고 같다/포함할지로 분기

if Var in MatchList
if Var not in MatchList
if Var contains MatchList
if Var not contains MatchList

Parameters

인수명설명
var 변수명
MatchList 후보 일람.
문자열을 「,」(으)로 단락지어 열거.
모두가 하나의 당겨 수라고 해 다루어진다.
콤마를 나타내려면 , 「,,」라고 콤마를2개 계속하고 쓴다.
후보에 공문자열을 지정하고 싶은 경우, 「,value1,value2」라고 리스트의 최초를 콤마로 한다.
콤마의 전후의 공백은 제거되지 않는다.

Remarks

[not] in그럼,Var하지만MatchList의 어떤 것일까하고 완전하게 일치할지로 판정한다.
[not] contains그럼,MatchList의 안에Var에 완전하게 포함되는 문자열이 있을지로 판정한다.

모든 비교는 문자열적으로 일치할지로 행해진다
StringCaseSense그리고 대문자 소문자의 차이를 고려할지를 설정할 수 있다.

Related

IfEqual/Greater/Less, if var in MatchList, if var is type, IfInString, StringCaseSense, EnvAdd, Blocks, Else

Example(s)

if var in exe,bat,com
	MsgBox The file extension is an executable type.

if var in 1,2,3,5,7,11 ; Avoid spaces in list.
	MsgBox, %var% is a small prime number.

if var in %MyItemList%
	MsgBox %var% is in the list.

InputBox, UserInput, Enter YES or NO
if UserInput not in yes,no
	MsgBox Your input is not valid.
WinGetTitle, active_title, A 
if active_title not in Microsoft,- Message,Outlook ; Note no spaces between commas. 
{ 
     Send,!{F4}
}


AutoHotKey(오토핫키) 설명서 If(식)

Posted by 발전소장
2014. 8. 14. 01:17 AutoHotKey/Commands

If(식)

식의 계산 결과의 진위로 조건 분기를 실시한다

If(Expression)

Parameters

Expression식.식의 설명참조.

Remarks

식의 내용이 진위치로서 판단되어 진(True)인 경우, 다음의 행의 커멘드 혹은블록하지만 실행된다.
다음의 행의 커멘드 혹은블록의 후에Else에 이어 커멘드 혹은블록하지만 있으면, 의식(False)에서 만났을 경우에 실행된다.

Related

식의 설명, Var:=식, if var in/contains MatchList, if var between, IfInString, Blocks, Else

Example(s)

if (A_Index > 100 or Done)
	return

if (A_TickCount - StartTime > 2*MaxTime + 100)
{
	MsgBox Too much time has passed.
	ExitApp
}

if (Color = "Blue" or Color = "White")
{
	MsgBox The color is one of the allowed values.
	ExitApp
}
else if (Color = "Silver")
{
	MsgBox Silver is not an allowed color.
	return
}
else
{
	MsgBox This color is not recognized.
	ExitApp
}


AutoHotKey(오토핫키) 설명서 IfExist / IfNotExist

Posted by 발전소장
2014. 8. 14. 01:17 AutoHotKey/Commands

IfExist / IfNotExist

지정한 파일이나 디렉토리가 존재할지로 분기

IfExist, FilePattern
IfNotExist, FilePattern

Parameters

인수명설명
FilePattern 패스나 파일명, 와일드 카드.
상대 패스로 기술되었을 경우,%A_WorkingDir%(으)로부터 검색된다.

Related

Blocks, Else, File-loops

Example(s)

IfExist, D:\
	MsgBox, The drive exists.
IfExist, D:\Docs\*.txt
	MsgBox, At least one .txt file exists.
IfNotExist, C:\Temp\FlagFile.txt
	MsgBox, The target file does not exist.


AutoHotKey(오토핫키) 설명서 If (변수의 비교)

Posted by 발전소장
2014. 8. 14. 01:17 AutoHotKey/Commands

If (변수의 비교)

변수와 수치를 비교해 조건 분기를 실시한다.

if var = value
if var <> value
if var > value
if var >= value
if var < value
if var <= value
IfEqual,var,value
IfNotEqual,var,value
IfGreater,var,value
IfGreaterOrEqual,var,value
IfLess,var,value
IfLessOrEqual,var,value

Parameters

인수명설명
var 변수명
value 수치 혹은 문자열.
변수끼리를 비교하고 싶은 경우, 「%var2%」(와)과 같이 변수 참조의 형태로 할 필요가 있다.
생략 하면, 하늘의 문자열을 지정한 것이 된다.

Remarks

var의 내용과value의 값이 함께 수치의 경우는, 수치로서 비교된다.
언젠가 혹은 양쪽 모두가 문자열의 경우는, 문자열로서 비교된다.
문자열로서의 비교에서도, 문자 코드로의 순서에 의해 대소를 비교할 수 있다.

IfEqual(와)과 같은 커멘드명의 형식의 경우, 더욱 콤마로 단락지어 조건에 일치했을 경우에 실행하는 커멘드를 기술할 수 있다.

Related

IF (식), StringCaseSense, IfInString, Blocks, Else

Example(s)

if counter >= 1
	Sleep, 10

if MyVar = %MyVar2%
	MsgBox The contents of MyVar and MyVar2 are identical.
else if MyVar =
{
	MsgBox, 4,, MyVar is empty/blank. Continue?
	IfMsgBox, No, Return
}
else if MyVar <> ,
	MsgBox The value in MyVar is not a comma.
else
	MsgBox The value in MyVar is a comma.

if Done
	MsgBox The variable Done is neither empty nor zero.


AutoHotKey(오토핫키) 설명서 If var [not] between L and U

Posted by 발전소장
2014. 8. 14. 01:16 AutoHotKey/Commands

If var [not] between L and U

변수의 값이 상한과 하한의 사이에 있을지로 분기

if Var between LowerBound and UpperBound
if Var not between LowerBound and UpperBound

Parameters

인수명설명
var 변수명
LowerBound 하한
UpperBound 상한

Remarks

3개의 당겨 수가 모두 수치의 경우, 비교는 수치로서 행해진다.
문자열이 포함되는 경우, 문자 코드순서의 순위로 비교된다.
문자열로서 비교하는 경우,StringCaseSense그리고 대문자 소문자의 차이를 고려할지를 설정할 수 있다.

Related

IfEqual/Greater/Less, if var in MatchList, if var is type, IfInString, StringCaseSense, EnvAdd, Blocks, Else

Example(s)

if var between 1 and 5
	MsgBox, %var% is in the range 1 to 5, inclusive.

if var not between 0.0 and 1.0
	MsgBox %var% is not in the range 0.0 to 1.0, inclusive.

if var between blue and red
	MsgBox %var% is alphabetically between blue and red.

LowerLimit = 1
UpperLimit = 10
InputBox, UserInput, Enter a number between %LowerLimit% and %UpperLimit%
if UserInput not between %LowerLimit% and %UpperLimit%
	MsgBox Your input is not within the valid range.


AutoHotKey(오토핫키) 설명서 Hotstring

Posted by 발전소장
2014. 8. 14. 01:14 AutoHotKey/Commands

Hotstring

개요

핫 스트링은, 유저가 특정의 문자열을 타이프 쳤을 때에 액션을 발생 당하는 기능이다.
입력된 문자열을 다른 문자열을 입력하는 자동 치환형과 hot key와 같이 스크립트를 실행하는 타입이 있다.

NT계 전용.

자동 치환형

::btw::by the way

상기와 같이 설정하면, 「btw」라고 하는 단어를 입력했을 때에, 그것이BackSpace그리고 삭제된 후, 대신에 「by the way」라고 입력된다.
치환 후의 텍스트의 지정은Send커멘드와 같이 특수 키등도 지정할 수 있지만,(현재)변수를 전개하는 것은 할 수 없다.
치환 후의 텍스트에2아르바이트 문자를 사용할 수 없기 때문에, 스크립트 실행형으로 클립보드를 경유해 붙이는 등 방법을 취할 필요가 있다.

이 기능은 주로 영어권으로의 텍스트 입력의 절력화를 상정하고 있다고 생각되어 일본어 환경에서는 용도가 한정된다.
거기서, 이 페이지에서는, 스크립트 실행형에 관계가 있는 부분을 주로 설명한다.

스크립트 실행형

::kita-::
Clipboard=렝━━━━━━(刪_)━━━━━━ !!!!!
Send,^v
Return

상기와 같이 설정하면, 「kita-」라고 타이프 쳤을 때에, 「kita-」(이)가BackSpace그리고 삭제된 후,AA하지만 붙일 수 있다. 타이프 친 텍스트가 삭제되지 않게 하려면 , 후술의 옵션으로 「B0」(을)를 지정한다.

종료 문자

::btw::by the way」라고 설정했을 경우, 단지 「btw」라고 입력하는 것 만으로는 핫 스트링은 발동하지 않는다.
단어의 후에 종료 문자가 입력될 필요가 있다.
디폴트의 종료 문자는, 「-()[]{}':;"/\,.?!{Enter}{Space}{Tab}」이다.

#Hotstring EndChars -()[]{}:;'"/\,.?!`n `t

상기와 같이 기술하면, 종료 문자를 변경할 수 있다.
이 지령은 다른 옵션과 달리, 스크립트중에서1회만 유효하고, 모든 핫 스트링에 영향을 준다.

후술 하는 옵션으로 「*」(을)를 지정하면, 핫 스트링 마다 종료 문자를 필요로 하지 않게 설정할 수도 있다.

자동 치환형의 경우, 종료 문자는 치환 후의 텍스트가 입력된 뒤에 입력된다.(Enter키 이외)
예를 들면, 「btw/」라고 입력하면, 「by the way/」(이)가 된다.
이것은 「O」옵션으로 무효화할 수 있다.

스크립트 실행형의 경우, 종료 문자의 입력은 납치되어 없었던 일이 되어 버린다.
스크립트 실행형의 경우, 편입 변수 「A_EndChar」(으)로 입력된 종료 문자를 알 수 있다.

대문자 소문자의 차이

통상은 대문자 소문자의 차이를 무시해 발동한다.
또한, 치환 후의 텍스트가 알파벳열의 경우, 「btw」→「by the way」, 「Btw」→「By the way」, 「BTW」→「BY THE WAY」(와)과 같이 치환된다.
이 동작은, 「C1」옵션으로 무효화할 수 있다.

대문자 소문자를 구별시키고 싶은 경우는, 「C」옵션을 사용한다.

::abc::」와「::ABC::」(와)과 같은 대문자 소문자 이외가 같은 핫 스트링 라벨은 존재할 수 없다.
: :abc::」(와)과 같이, 옵션을 지정하는 부분에 반각 스페이스를 들어갈 수 있으면, 다른 라벨명으로 인식되게 되어, 대문자 소문자 이외가 같은 핫 스트링을 설정할 수 있다.

옵션

옵션의 지정의 방법에는2가지 있다.
복수의 옵션을 지정할 때는, 스페이스에서 단락지어도 단락짓지 않아도 좋다.

#Hotstring지령

#Hotstring C

상기와 같이 기술하면, 그 이후에 정의되는 핫 스트링의 설정을 변경할 수 있다.

개별 지정

:*:btw::by the way

개별의 핫 스트링의 설정을 지정하려면 , 최초의 「:」의 사이에 옵션을 기술한다.

옵션 일람

SI
자동 치환으로,Input모드를 사용해 자동 입력을 실시한다.(디폴트)
각 모드의 자세한 것은SendMode커멘드의 설명을 참조.
SP
자동 치환으로,Play모드를 사용해 자동 입력을 실시한다.
SE
자동 치환으로,Event모드를 사용해 자동 입력을 실시한다.
B0
입력된 텍스트를BackSpace그리고 삭제하지 않는다.
덧붙여(1.0.17현재)종료 문자의 문자도 삭제되지 않고, 더욱 자동 입력의 후에 종료 문자가 입력되어 버린다.
B
B0옵션을 해제·무효화한다.
Z
발동한 시점에서, 키 입력의 기억 버퍼를 클리어 한다.
이 옵션을 사용하지 않는 경우, 예를 들어 「B0」 「*」 「?」옵션포함의 「uma」라고 하는 핫 스트링이 발동한 직후는, 기억 버퍼에 「uma」(이)가 들어가 있기 위해, 계속해 「ibou」라고 입력하면, 「umaibou」라고 하는 핫 스트링이 발동해 버린다.
Z0
Z옵션을 해제·무효화한다.
C
대문자 소문자를 구별한다.
C1
대문자 소문자는 무시하면서, 입력 내용의 대문자 소문자의 따로 따라 자동 입력되는 내용의 대문자 소문자를 변화시키는 기능을 무효화한다.
Kn
키의 입력 간격을 지정한다.
BackSpace에 의한 삭제나 자동 치환에서는,1키 마다 여기서 지정한 밀리 세컨드만 사이를 비워 입력된다.
디폴트는 「0」(으)로, 이 경우 「Sleep 0」(을)를 실행했을 때와 같이, 다른 프로세스에 의한 세치기를 허락한다.
「-1」(을)를 지정하면, 세치기를 허락하지 않고 최고의 속도로 입력된다.
O
자동 치환으로, 마지막에 종료 문자를 입력하지 않는다
P
스크립트 실행형에 있어서의세치기 우선도(을)를 지정한다
R
치환 후의 텍스트로 「{Enter}」(와)과 같은 특수 키의 해석을 실시하지 않고, 기술되고 있는 텍스트를 그대로 입력한다.
*
종료 문자 없이 발동하도록(듯이) 한다.
?
단어의 도중에 있어도 발동하게 된다.
통상은, 알파벳 키를 타이프 친 직후에 일치하는 입력이 있어도 무시된다.
C0,O0,R0,*0,?0
각 옵션의 지정을 무효화·해제한다

비고

BackSpace에 의한 다시 놓아

핫 스트링의 감시는,BackSpace에 의한 수정을 고려한다.
예를 들면, 「br{BackSpace}tw」(은)는 「btw」에 매치한다.
다른 비문자 키는 무시되어 감시 내용은 리셋트 된다.

마우스 클릭을 했을 경우도, 감시 내용은 리셋트 된다.

텍스트 입력란 이외로의 동작

핫 스트링은 텍스트를 입력할 수 없는 장소에서도 완전히와 같이 동작한다.
자동 입력되는 키에 의해서 예기치 못한 동작이 되는 경우도 있으므로 주의가 필요.

IME사용시의 동작

핫 스트링은IME하지만ON때에도 유효하다.
IME하지만ON때에 텍스트가 자동 입력되면, 「btw」→「by(이)라고 원y」와 같이 히라가나에 변환되어 이상해져 버린다.

또, 「kita-」(와)과 같은 모음을 포함한 핫 스트링에서는, 「왔다―」(와)과 같이 미확정 문자열의 문자수가 줄어 들어 버리기 위해,BackSpace에 의한 자동 삭제로 여분으로 삭제를 해 버린다.
예를 들면,IME그리고 「주먹밥」을 확정하고, 다음에 「왔다―」(을)를 입력했을 경우,2문자 불필요하게 삭제되어 「도깨비렝━(刪_)━!!」가 되어 버린다.
이것을 회피하려면 , 「kt-」(와)과 같이 모음을 포함하지 않는 핫 스트링에 할당하면 좋다.
또,IME의 설정에 따라서는, 「Kita-」(와)과 같이Shift(을)를 누르면서 영문자를 입력하면, 알파벳 상태로 입력된다.
이 경우, 타이프 친 문자수와BackSpace그리고 삭제해야 할 문자수는 일치할 것이다.
따라서, 「Kita-」(와)과 같이 핫 스트링을 대문자로 치기 시작하도록 하면, 불필요한 문자까지 삭제되어 버리는 것은 회피할 수 있다.
잘못해 「왔다―」라고 입력하고 있을 때 발동해 버리는 것을 피하고 싶으면, 「:C:Kita-::」(와)과 같이 「C」옵션을 붙이고, 대문자 소문자가 일치하지 않을 때는 발동하지 않게 설정하면 된다.

문자수의 상한

핫 스트링으로서 사용할 수 있는 문자수의 상한은40문자.
치환 후의 문자열은1행의 길이의 상한이다16,383까지 가능.

복수 매치시의 우선도

입력이 복수의 핫 스트링에 매치하는 경우, 먼저 지정하는 것이 우선된다.

:?:btw::by the way
::abtw::aaaaa

위의 예에서는, 「abtw」라고 입력했을 때 「btw」의 부분이 「by the way」에 치환된다.