AutoHotKey(오토핫키) 설명서 & 연산자

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

& 연산자(비트 논리적)

2개의 식의 비트마다의 논리적을 요구하는 연산자

Expression1&Expression2

Parameters

인수명설명
Expression1임의의 식
Expression2임의의 식

Remarks

결과는,Expression1,Expression2의 어느 쪽인지 혹은 양쪽 모두가0의 비트는0에, 양쪽 모두가1의 비트는1(이)가 된다.

비트 연산 할 수 있는 것은 정수치만.
소수치는, 정수치로 변환하고 나서 계산된다.
내부적으로는64비트 부호 첨부 정수로 다루어지고 있는 모양.부호 첨부64비트 정수의 범위(-9223372036854775808..9223372036854775807)의 범위에 들어가지 않는 경우,65비트째부터 위는 잘라 버릴 수 있다.

Related

, if(식), Var:=식

AutoHotKey(오토핫키) 설명서 =, := 대입 연산자

Posted by 발전소장
2014. 8. 13. 17:12 AutoHotKey/Commands

대입 연산자

변수에 식의 계산 결과를 대입

Var := Expression
Var op= Expression

Parameters

Var대입처의 변수명.「ArrayName%Index%」(와)과 같이, 변수의 참조를 포함하면, 변수의 내용을 전개한 변수명이 사용된다.
op 「+」 「-」 「*」 「/」 「//」 「.」 「|」 「&」 「^」 「>>」 「<<」의 어느 쪽인가의 연산자.
Expression식.식의 설명참조.

Remarks

「:=」에서는,Expression(을)를 평가한 결과의 값이Var그리고 지정한 변수에 대입된다.

var:=x+y+z

「+=」(이)나 「*=」(와)과 같은 형식에서는,Var그리고 지정한 변수와Expression(을)를op그리고 지정한 연산자로 연산한 결과가Var자신에게 대입된다.
상기의 예에서는,x의 값은11(이)가 된다.
대입식 전체의 값은, 대입 후의 변수의 값이 된다.

x:=1
MsgBox,% x+=1

대입 연산자가 연속하고 있는 경우, 제일 오른쪽의 것으로부터 순서에 계산된다.
아래와 같은 예에서는, 우선c에1하지만 다리 되어4(이)가 되어,b에c하지만 다리 되어6(이)가 되어,a에b하지만 더해져7(이)가 된다.

a:=1,b:=2,c:=3
a+=b+=c+=1
MsgBox,%a%,%b%,%c%

대입식 자체는, 대입처의 변수를 나타내는 것이라고 해도 다루어지기 위해, 그것을 더욱 대입식의 좌변에 사용하거나 「&」연산자로 주소를 참조하거나함수의ByRef부착 인수에 사용할 수도 있다.
아래와 같은 예에서는, 우선x에1하지만 가산해, 더욱2(을)를 걸어func()함수에 참조 인수로서 건네주어, 함수내에서10(을)를 가산한다.

func(ByRef arg){
    arg+=10
}
x:=1
func((x+=1)*=2)
MsgBox,% x

「+=」 「-=」 「*=」 「/=」(이)가 제일 왼쪽의 연산자였던 경우, 각각EnvAdd, EnvSub, EnvMult, EnvDiv커멘드의 별표기로 간주해지기 위해, 다른 경우와 다른 동작이 된다.
Var(이)나Expression하지만 수치로서 올바르지 않았던 경우, 「0」이다고 보인다.(통상은, 연산 결과가 하늘의 문자열이 된다)
「+=」 「-=」에서는,일자 시각의 연산이 가능하게 된다.
「/=」에서는,Var(와)과Expression하지만 모두 정수치의 경우, 결과의 소수점 이하를 잘라 버릴 수 있어 정수치가 되어 버린다.(통상의 「/」연산자는, 소수점 이하를 잘라 버리지 않는다)

Related

식의 설명, IF (식), SetEnv, EnvSet, EnvAdd, EnvSub, EnvMult, EnvDiv, If, 배열

Example(s)

Var := 3
Var := "literal string"
Var := Price * (1 - Discount/100)

Finished := not Done or A_Index > 100
if not Finished
{
	FileAppend, %NewText%`n, %TargetFile%
	return
}
else
	ExitApp

AutoHotKey(오토핫키) 설명서 && 연산자

Posted by 발전소장
2014. 8. 13. 17:08 AutoHotKey/Commands

&& 연산자(논리적)

2개의 식의 논리적의 진위치를 돌려주는 연산자

Expression1&&Expression2
Expression1 AND Expression2

Parameters

인수명설명
Expression1임의의 식
Expression2임의의 식

Remarks

Expression1(와)과Expression2의 언젠가 혹은 양쪽 모두가 가짜라면 결과는 가짜에, 양쪽 모두가 진이라면 결과는 실로 된다.

수치의 제로나 하늘의 문자열은 가짜(False)(으)로서 다루어져 그 이외는 진(True)(으)로서 다루어진다.
논리 연산의 결과는, 가짜(False)의 경우 「0」, 진(True)의 경우 「1」가 된다.

Related

, if(식), Var:=식

AutoHotKey(오토핫키) 설명서 & 연산자

Posted by 발전소장
2014. 8. 13. 17:07 AutoHotKey/Commands

& 연산자(주소)

변수의 내용이 격납된 메모리 영역의 주소를 얻는 연산자

&Var

Parameters

인수명설명
Var변수명

Related

, if(식), Var:=식

AutoHotKey(오토핫키) 설명서 + 연산자

Posted by 발전소장
2014. 8. 13. 17:05 AutoHotKey/Commands

+ 연산자(가산)

2개의 식의 화를 돌려주는 연산자

Expression1-Expression2

Parameters

인수명설명
Expression1임의의 식
Expression2임의의 식

Related

, if(식), Var:=식

AutoHotKey(오토핫키) 설명서 Usage

Posted by 발전소장
2014. 8. 13. 16:50 AutoHotKey

사용 방법

인스톨

ZIP어카이브(archive)판은, 해동하는 것만으로 실행 가능하게 된다.
installer판은, 실행한다고 표시되는 화면에서 「Next>」 「I Agree」 「Next」 「Install」의 순서에 눌러 가면 인스톨 할 수 있다.

스크립트 파일이 관련지어

AutoHotkey(을)를 installer로 인스톨 하면, 확장자(extension) 「.ahk」의 파일에 관련지어를 해 확장자(extension) 「.ahk」의 스크립트 파일을 익스플로러로 더블 클릭 했을 때 등에AutoHotkey.exe그리고 실행되게 된다.
오른쪽 클릭 메뉴에는, 스크립트를 실행하는 「Run Script」외, 후술의ahk2.exe그리고 실행 파일화하는 「Compile Script」,notepad.exe그리고 스크립트 파일을 여는 「Edit Script」(이)가 추가된다.
또, installer의 「Choose Components」의 화면에서 「Enable drag & drop onto scripts」에 체크를 했을 경우, 스크립트 파일의 아이콘에 파일을 드러그&드롭 했을 때에, 스크립트 파일에 인수(%1%)(으)로서 보내지게 된다.

스크립트의 실행 파일화

ahk2exe.exe(을)를 사용하는 것으로, 스크립트를 실행 파일화하는 것이 가능.
실행 파일은UPX에 의한 압축이 베풀어진다.
역컴파일러도 공개되고 있지만, 패스워드로 암호화하면 역 컴파일을 막을 수 있다.
작성한 실행 파일의 배포는 자유.

컴파일 된 스크립트에서는 통상, task tray 메뉴로부터 메인 윈도우를 표시하는 것은 할 수 없다.
Menu,TRAY,MainWindow」(으)로 메인 윈도우를 표시 가능하게 할 수 있다.

스크립트측으로부터, 컴파일 된 상태로 실행되고 있는지 어떤지를 알려면 , 「A_IsCompiled」변수를 사용한다.「1」(이)라면 컴파일 되고 있다.

ahk2exe.exe의 커멘드 라인

Ahk2exe.exe /in <infile.ahk> [/out <outfile.exe>][/icon <iconfile.ico>][/pass <passphrase>]

Ahk2exe.exe(은)는 커멘드 라인으로부터 직접 컴파일을 실행하는 일도 가능.

컴파일 된 실행 파일의 커멘드 라인

CompiledScript.exe [/f] [/r] [/ErrorStdOut] [Script Parameters] 

컴파일 해 작성된 실행 파일은, 상기의 커멘드 라인으로 실행할 수 있다.
Script Filename의 지정이 없는 이외는AutoHotkey.exe(와)과 같다.

AutoHotkey.exe의 실행

AutoHotkey.exe하AutoHotkey의 스크립트를 실행하는 메인 프로그램이다.
실행시의 커멘드 라인은 이하와 같은 서식이 되어 있다.
스크립트 파일을 관련지어로부터 실행하는 경우는, 의식할 필요는 없다.

AutoHotkey.exe [/f] [/r] [/ErrorStdOut] [Script Filename] [Script Parameters]

각 옵션의 의미는 이하와 같다.

/f
경고 다이얼로그를 내지 않고 , 강제적으로 기동
/r
스크립트를 재독 보고 하고 싶을 때에 사용.
/ErrorStdOut
문법 에러를 다이얼로그 표시하지 않고 표준 출력에 출력한다

단지AutoHotkey.exe(을)를 실행하는 등,Script Filename(을)를 지정하지 않고 기동했을 경우는, 기동시의 작업 디렉토리의AutoHotkey.ini하지만 읽힌다.
파일이 존재하지 않는 경우,AutoHotkey.ini(을)를 작성해도 좋은가를 문의하는 다이얼로그가 표시된다.

Script Filename(을)를 지정하지 않으면Script Parameters(을)를 지정하는 것은 할 수 없다.

Script Parameters에는 임의의 수의 문자열을 스페이스 단락으로 건네줄 수 있다.
스페이스를 포함한 경우는 「"」(으)로 둘러싼다.
건네받은 인수는,변수에 격납되어 스크립트내에서 「%1%」, 「%2%」……(와)과 같이 기술하는 것으로 참조할 수 있다.
「%0%」에는 인수의 수가 격납된다.
덧붙여 스크립트 자신 패스를 취득하려면 「%A_ScriptFullPath%」변수를 사용한다.

스크립트의 에러

스크립트의 에러에는, 읽기시의 에러와 실행시의 에러가 있다.

존재하지 않는 커멘드나 함수의 호출해, 커멘드의 서식 잘못해, 존재하지 않는 라벨의 지정, 열림 괄호라고 닫아 괄호의 대응의 미비등이 읽어들여 때 에러가 된다.
이러한 문제가 있는 스크립트를 실행하려고 하면, 에러 개소나 에러 개요등이 다이얼로그로 표시되고 실행은 행해지지 않는다.

스크립트의 실행중에 커멘드가 어떠한 형태로 실패했을 경우등에는, 실행시 에러가 된다.
실행시 에러가 발생하면, 다이얼로그가 표시되어 에러의 발생했다스렛드(은)는 그 자리에서 종료한다.
hot key등을 할당할 수 있어상주 상태(이)가 되어 있는 스크립트에서는, 스크립트 자체는 종료하지 않는다.그러나, 스크립트가 기대 대로에 실행되지 않았던 것으로, 그 후의 실행에 지장을 초래하는 경우가 있다.

리로드

task tray 아이콘의 오른쪽 클릭 메뉴로부터 「Reload This Script」(을)를 실행하는 것으로, 스크립트를 다시 읽어들여 실행할 수 있다.
또, 상주 상태가 되어 있는 스크립트는, 같은 스크립트를 한번 더 기동하는 것으로, 「기존의 프로세스를 종료해 기동할까」를 문의하는 다이얼로그가 표시되어 「네」를 선택하는 것으로 다시 읽기 한다.
Reload커멘드로 스크립트중으로부터 다시 읽기를 실시하게 하는 일도 가능.

AutoHotkey.exe의 task tray 아이콘

AutoHotkey.exe(을)를 실행하면, task tray에 아이콘이 표시된다.(이것은#NoTrayIcon지령이나Menu커멘드로 비표시에 할 수 있다)
더블 클릭으로AutoHotkey의 메인 윈도우가 표시되는 것 외에 오른쪽 클릭 메뉴로부터 이하의 조작을 실행할 수 있다.

Open
AutoHotkey의 메인 윈도우를 표시한다.
Help
헬프 파일(AutoHotkey.chm)(을)를 연다
Window Spy
윈도우 정보 표시 툴·AU3_Spy.exe(을)를 기동한다
Reload This Script
스크립트를 다시 읽기 해, 최초부터 다시 실행한다(Reload커멘드와 같다)
Edit This Script
스크립트를 메모장(notepad.exe)그리고 열린다
Suspend Hotkeys
할당한 hot key를 모두 정지한다(Suspend커멘드와 같다)
Pause Script
스크립트를 일시정지한다(Pause커멘드와 같다)
Exit
스크립트를 종료한다.ExitApp커멘드와 같다.

AutoHotkey.exe의 메인 윈도우

AutoHotkey의 메인 윈도우에서는, 실행중의 스크립트의 여러가지 정보를 표시할 수 있다.
표시 모드는 도구모음의 「View」이하로부터 선택해 바꾼다.
또, 각 화면을 표시하기 위한 커멘드도 각각 준비되어 있다.
어느 화면도, 호출 커멘드를 실행할까 「F5」키를 누르는 것으로 최신의 정보로 갱신할 수 있다.

Lines most recently executed

실행된 스크립트의 행이 차례로 표시된다.
이 화면은ListLines커멘드에서도 표시할 수 있다.

Script lines most recently executed (oldest first).  Press [F5] to refresh.  The seconds elapsed between a 
line and the one after it is in parentheses to the right (if not 0).  The bottommost line's elapsed time is 
the number of seconds since it executed.

002: Return (2.59)
003: Sleep,100 (0.11)
004: MsgBox (1.63)
005: ListLines

Press [F5] to refresh.

행 번호와 행의 내용이 실행된 순서에 표시된다.행의 내용은, 실제로 스크립트 파일에 기술되고 있는 것 것과 같다고는 할 수 없지만, 의미는 완전히 같게 되어 있다.
행의 내용의 뒤를 뒤따르고 있는 것이 있는 숫자가 들어간 「()」(은)는, 다음의 처리가 실행 될 때까지 경과한 시간(초)이다.
어떠한 이유로 스크립트의 처리를 하지 않았던 기간이 있는 경우에 표시된다.

Variables and their contents

스크립트에 의해서 작성된 변수와 그 내용이 일람표 나타난다.
이 화면은ListVars커멘드에서도 표시할 수 있다.

Local Variables for func2()
--------------------------------------------------
b[1 of 1]: a


Global Variables (alphabetical)
--------------------------------------------------
0[1 of 1]: 0
ErrorLevel[1 of 1]: 0
value[8 of 63]: aaaaaaaa

각 행의 선두가 변수명이다.일람은 변수명 순서에 늘어놓을 수 있고 있다.
변수명의 뒤의 「[x of y]」가 되고 있는 부분은, 왼쪽의 숫자가 변수의 내용의 문자수, 오른쪽의 숫자가 변수를 위해서 확보되고 있는 메모리의 용량(VarSetCapacity()함수로 설정 가능)이다.
「:」보다 오른쪽으로 변수의 내용의 선두60아르바이트분이 표시된다.

화면이 표시된 시점에서AutoHotkey의유저 정의 함수하지만 실행되고 있는 경우는, 함수내에서만 유효한 로컬 변수의 일람이 표시된다.(「Local Variables for ...」이하의 부분)
함수중에서 다른 함수 호출을 하고 있는 경우에서도, 현재 실행되고 있는 맨 위위의 함수의 물건만이 표시된다.

Hotkeys and their methods

스크립트에 의해서 할당할 수 있고 있는 hot key가 일람표 나타난다.
이 화면은ListHotkeys커멘드에서도 표시할 수 있다.

Type	Off?	Running	Name
-------------------------------------------------------------------
reg			F1
m-hook			MButton
k-hook			$F2
k-hook			F3

각각의 열의 의미는 이하와 같다.

Type
hot key의 등록 방법.이하와 같은 것이 있다.
reg
Windows의 hot key 등록 기구를 이용해 등록
reg(no)
hot key가 무효화되고 있기 때문에, 등록을 해제되어 있다
k-hook
키보드 훅에 의해서 키 눌러 인하를 검지하고 있다
m-hook
마우스 훅에 의해서 mouse button 눌러 인하를 검지하고 있다
2hooks
마우스와 키보드의 양쪽 모두의 훅을 사용하고 있다
joypoll
죠이스틱의 버튼을 검출하기 위한 처리를 실시하고 있다
Off?
Hotkey커멘드등에 의해서 일시적으로 무효화되고 있는 경우는 「OFF」(이)가 된다
#IfWinActive지령의 조건 나누기에 의해 복수 할당할 수 있었던 우리 일부만이 무효화되고 있는 경우는 「PART」(이)가 된다
Running
hot key 써브루틴의 스렛드가 실행되고 있는 수
Name
hot key명

Key history and script info

키보드의 이력이나 밀리고 있는 키, 그 외 스크립트의 정보등이 표시된다.
KeyHistory커멘드에서도 표시할 수 있다.

Window: E:\test\test.ahk - AutoHotkey v1.0.44.07
Keybd hook: yes
Mouse hook: yes
Enabled Timers: 0 of 0 ()
Interrupted threads: 0
Paused threads: 0 of 0 (0 layers)
Modifiers (GetKeyState() now) = 
Modifiers (Hook's Logical) = 
Modifiers (Hook's Physical) = 
Prefix key is down: no

NOTE: To disable the key history shown below, add the line "#KeyHistory 0" anywhere in the script.  The same 
method can be used to change the size of the history buffer.  For example: #KeyHistory 100  (Default is 40, 
Max is 500)

The oldest are listed first.  VK=Virtual Key, SC=Scan Code, Elapsed=Seconds since the previous event.  Types:
 h=Hook Hotkey, s=Suppressed (blocked), i=Ignored because it was generated by an AHK script, a=Artificial, #=
Disabled via #IfWinActive/Exist.

VK  SC	Type	Up/Dn	Elapsed	Key		Window
-------------------------------------------------------------------------------------------------------------
78  043	 	u	0.08	F9             	E:\test\test.ahk - VxEditor
70  03B	 	d	2.61	F1             	
70  03B	 	u	0.11	F1             	
01  000	 	d	0.98	LButton        	
01  000	 	u	0.08	LButton        	
Press [F5] to refresh.

상부에 표시되는 정보의 의미는 이하와 같다.

Window
이 화면이 표시되기 직전에 액티브했던 윈도우의 타이틀
Keybd hook
키보드 훅이 유효하게 되어 있으면 「yes」.키보드 훅을 유효하게 하려면 , 「$」수식자 hot key를 할당하는지,#InstallKeybdHook지령을 기술해 둔다
Mouse hook
마우스 훅이 유효하게 되어 있으면 「yes」.마우스 훅을 유효하게 하려면 , mouse button에 hot key를 할당하는지,#InstallMouseHook지령을 기술해 둔다
Enabled Timers
유효화 되고 있는 타이머의 수.「()」 안은 할당할 수 있었던 라벨명의 일람.타이머의 할당은SetTimer커멘드로 실시한다
Interrupted threads
스렛드의 세치기에 의해서 정지하고 있는 스렛드의 수
Paused threads
Pause커멘드등에 의해서 정지하고 있는 스렛드의 수
Modifiers (GetKeyState() now)
눌러 내려지고 있는 수식 키의 일람(GetKeyState()함수등에서 눌러 인하 상태라고 인식되는 것)
Modifiers (Hook's Logical)
눌러 내려지고 있는 수식 키의 일람(프로그램등에 의해서 눌러 내려지고 있는 것)
Modifiers (Hook's Physical)
눌러 내려지고 있는 수식 키의 일람(실제로 키보드의 키가 눌러 내려지고 있는 것)
Prefix key is down
「MButton & LButton」(와)과 같은 콤비네이션 키의 좌측으로 지정되어있는 키가 밀리고 있을 때 「yes」(이)가 된다

이력 부분의 설명문에 이어 키의 이력이 표시된다.
아래에 갈 만큼 새로운 이벤트이다.
각각의 열은 이하와 같은 의미가 되어 있다.

VK
조작된 키의 가상 키코드.hot key 라벨이나Send커멘드등에서 「vk??」(와)과 같이 해 키명 대신에 사용할 수 있다
SC
조작된 키의 스캔 코드.hot key 라벨이나Send커멘드등에서 「sc???」(와)과 같이 해 키명 대신에 사용할 수 있다
Type
이벤트의 타입.이하의 것이 있다.
h
훅을 이용한 hot key가 발동했다
s
훅에 의해서 이벤트가 은폐 되었다(어느 키에 hot key를 할당할 수 있고 있고, 그 키가 밀어 올려 이벤트에는 아무것도 할당할 수 있지 않은 경우, 밀어 올려 이벤트가 은폐 된다)
i
AutoHotkey자신이 생성한 이벤트(AutoHotkey의 hot key는 발동하지 않는다)
a
다른 프로그램에 의해서 생성된 이벤트
#
hot key는 할당할 수 있고 있지만#IfWinActive지령의 조건에 일치하지 않기 때문에 무시되었다
Up/Dn
키를 눌렀을 경우는 「d」, 떼어 놓았을 경우는 「u」(이)가 된다
Elapsed
하나전의 이벤트로부터의 경과시간(초)
Key
키명
Window
이벤트가 발생한 윈도우의 타이틀.윈도우가 바뀐 직후의 이벤트만 표시된다

AutoHotKey(오토핫키) 설명서 Tools

Posted by 발전소장
2014. 8. 13. 16:48 AutoHotKey

외부 툴 소개

AutoHotkey(으)로부터 호출해 이용하면 편리한 온라인 소프트웨어를 소개합니다.

CraftDrop
지정 파일을 지정 윈도우에 의사적으로 드롭 하는 툴
1대의 비행기능툴집
란체등에서 이용하는 툴군

CraftDrop

Description

커멘드 라인으로 받은 파일을 임의의 윈도우에 의사적으로 드롭 하는 프로그램입니다.
드롭처의 윈도우는, 실행시에 선택하는 것 외에 커멘드 라인으로 지정할 수도 있습니다.

SampleScript

마우스아래의 윈도우에 파일을 드롭 합니다.

MouseGetPos,x,y,win,ctr
WinGetClass,cls,ahk_id %win%
WinGetTitle,ttl,ahk_id %win%
Run,D:\CraftDrop\cdrop.exe /t%ttl% /c%cls% %FILENAME%

WebSite

Craftware(http://hp.vector.co.jp/authors/VA012411/)

1대의 비행기능툴집

Description

란체등에서 이용하는 1대의 비행기능툴을 다수 공개하고 있는 페이지입니다.
AutoHotkey그리고 유용한 것으로 해서는, 이하와 같은 툴이 있습니다.

  • 벽지 변경
  • 지정 파일의 context menu 표시
  • 트레이 개폐, 리모트 미디어의 배출
  • 지정 파일을 크리프보드에 카피(익스플로러 등에 붙일 수 있다)
  • 스크린 세이버의ON/OFF변환
  • 스크린 세이버 기동

WebSite

1대의 비행기능툴집(http://cspace.s2.xrea.com/software/SimpleCommand/)

AutoHotKey(오토핫키) 설명서 Scripts

Posted by 발전소장
2014. 8. 13. 16:46 AutoHotKey

스크립트

스크립트의 구성요소

AutoHotkey의 스크립트는, 이하와 같은 요소로 구성된다.

커멘드

FileAppend,This is test file.,test.txt
Run,notepad.exe test.txt

AutoHotkey의 스크립트는, 원칙으로서1행에 하나의 커멘드를 기술한다.
1행의 문자수는16,383아르바이트 이내라고 하는 제한이 있다.
커멘드는, 커멘드명과 인수를 콤마로 단락지어 기술한다.
커멘드명의 직후는, 공백 문자로 단락지으면, 콤마를 생략 해도 괜찮다.(제1인수에 공백을 지정하는 경우를 제외하다)
인수에 문자열을 지정하는 경우에서도, 「"」등에서 괄충분해는 하지 않고, 그대로 기술한다.
인수의 선두와 말미의 공백 문자는 무시되지만, 「%A_Space%」(와)과 같이 짜넣어 변수의 참조로서 기술하면 무시되지 않게 된다.
또,AutoTorim(을)를Off(으)로 하는 것도, 전후의 공백이 무시되지 않게 할 수 있다.

커멘드에는, 단지 그 자리에서 실행되어 다음의 행으로 옮기는 것 뿐만이 아니고, 조건에 의해서 다음에 실행되는 행이 바뀐다If계 커멘드나, 일련의 커멘드를 반복해 실행한다Loop커멘드, 스크립트의 다른 장소에 점프 한다GoTo커멘드,GoSub커멘드 등도 있다.

사용할 수 있는 커멘드에 대해서는,레퍼런스(을)를 참조.

복수행에 건너는 식·커멘드

if(value=1
    or value=2){
    MsgBox,value is 1 or 2
}

최초의 비공백 문자가 「++」 및 「--」이외의 연산자의 경우, 전의 행의 계속으로 간주해진다.
긴 식을 분할하는 것으로, 스크립트의 가독성을 향상 당한다.

Gui,Add,Text
    ,w100 h100 xp+0 yp+24 vTextLabel
    ,DUMMYMESSAGE

「,」도 연결에 사용할 수 있기 위해, 커멘드의 인수를 복수행으로 분할할 수도 있다.

MsgBox,1
    +2

커멘드의 인수에서는, 「+」등의 연산자는 문자열의 일부로 간주해지지만, 행의 연결에는 유효하기 때문에, 상기예에서는 「1+2」라고 하는 문자열이 표시된다.

val:=var1
    ;comment
    +var2 ;comment
    /* comment
    */ +var3

공행, 공백 문자만의 행, 코멘트등이 늦지 않아도 연결할 수 있다.

히아드큐먼트

MsgBox,this
(
 is
 long
) message

「(」만의 행이 있으면, 그 다음의 행으로부터 다음의 「)」(으)로 시작되는 행의 것까지가 개행(`n)단락으로 연결되어 직전의 행의 계속으로서 추가된다.

상기예에서는, 이하와 같이 표시된다.

this is
 long message

도중에 「)」(으)로 시작되는 행을 포함하고 싶은 경우는, 「`)」(와)과 같이 이스케이프 한다

연결 후의 행의 총문자수는16,383아르바이트까지이다.

「(」의 후에는, 이하의 옵션을 공백 문자 단락으로 열거할 수 있다.

Join[Str]
각 행의 사이에 삽입하는 문자열을 개행(「`n」)이외로 변경한다.단지 「Join」라고 지정하면, 단락 문자 없음으로 연결된다.
Str에는15아르바이트까지의 문자열을 지정할 수 있다.이Str부분에서만, 「`s」(이)가 반각 스페이스로 간주해진다.(례:「Join<br`s/>」)
LTrim
각 행의 줄머리의 반각 스페이스나Tab문자를 무시한다
RTrim0
줄 끝의 말미의 반각 스페이스나Tab문자를 무시하지 않게 한다
C
「;」에 의한 행 코멘트, 줄 끝 코멘트를 유효하게 한다
%
「%」(을)를 자동적으로 「`%」에 이스케이프 한다(변수 전개등이 행해지지 않게 된다)
`
「`」(을)를 자동적으로 「``」에 이스케이프 한다(「`n」등이 그대로 문자열의 일부로서 다루어진다)
,
콤마(「,」)하지만 자동적으로 「`,」로서 이스케이프 되는 것을 억제한다(커멘드의 인수의 단락등으로 해서 다루어지게 된다)

블록

If a=1
{
	FileAppend,This is test file.,test.txt
	Run,notepad.exe test.txt
}

「{」라고 하는 내용의 행이 있으면, 「}」라고 하는 내용의 행이 나타날 때까지가 하나의 블록이 된다.If계 커멘드에 의한 조건 분기나Loop에 의한 반복 처리로, 복수의 커멘드를 연속해 실행시키는 경우에 사용한다.
줄머리의Tab에 의한 인덴트는 있어도 없어도 좋지만, 인덴트 해 두면 가독성이 향상한다.
자세한 예 등은블록의 설명을 참조.

프리프로세서 지령

커멘드와는 별도로 「#」(으)로 시작되는 프리프로세서 지령과 같은 것이 있다.
이것은, 스크립트가 실행되기 전의 해석의 단계에서 처리되므로, 인수에 변수의 참조를 포함하는 것은 원칙으로서 할 수 없다.
통상은, 블록등의 안쪽에서 사용하는 것은 할 수 없다.

각종 지령에 대해서도,레퍼런스(을)를 참조.

라벨

Label1:
MsgBox,Label1

Goto,Label1

라벨명에 이어 「:」(이)가 기술되었을 뿐의 행이 있으면, 라벨로 해서 인식된다.
GoTo커멘드나GoSub커멘드를 사용하는 것으로, 특정의 라벨의 직후의 행에 처리를 점프 시킬 수 있다.
GoSub커멘드로 점프 했을 경우는,Return커멘드를 실행하는 것으로써GoSub하지만 실행된 다음의 행으로 돌아올 수 있다.

OnClipboardChange등 특정의 명칭의 라벨이 존재하면, 대응하는 이벤트가 발생했을 때에AutoHotkey에 의해서 자동적으로 실행된다.
또,OnExit커멘드등과 같이 이벤트에 대해 라벨을 할당하는 커멘드도 있다.

hot key 라벨

#F1::
Run,notepad
Run,iexplore
return

키명에 이어 「::」(이)가 기술된 행은 hot key 라벨이 되어, 그 키가 밀렸을 때에 그 자리소에 기술된 커멘드가 실행되게 된다.
또, 보통 라벨과 같이GoTo등에서 점프 하는 것도 가능하다.
자세한 것은hot key의 항을 참조.
또, 이용할 수 있는 키명에 대해서는키 리스트의 항을 참조.

#F1::Run,notepad

hot key에 할당하는 써브루틴은,1행 뿐이라면 라벨과 같은 행에 기술해도 좋다.

키리맵 정의

q::d

키명과 「::」에 이어 다른 키명만을 기술하면, 어느 키의 동작을 다른 키의 동작으로 바꾸어 버리는 리맵을 실시할 수 있다.
이것은 라벨은 아니기 때문에,GoTo등에 의하는 점프는 할 수 없다.
자세한 것은리맵의 항을 참조.

핫 스트링 라벨

::ahk::AutoHotkey

hot key 외에, 특정의 문자열이 타입 되었을 때에 자동적의 다른 문자열에 다시 타이프 치거나 써브루틴을 실행시키거나 하는 「핫 스트링」이라고 하는 기능이 존재한다.
자세한 것은Hotstring의 항을 참조.

유저 정의 함수

add(a,b,c=0,d=0){
	return a+b+c+d
}
MsgBox,% add(1,2,3)

인수를 받아 일련의 동작을 실행해, 돌아가 값을 돌려주는 함수를 정의할 수 있다.
함수는 식 중(안)에서 사용하거나 단독으로 호출하거나 해 사용한다.

자세한 것은함수의 항을 참조.

코멘트

;this is comment
MsgBox,this is message ;this is comment
/*
this
     is
        comment
*/

줄머리에 「;」(세미콜론)(이)가 있는 행은 코멘트행이 되어, 무시된다.
또, 커멘드의 후에 반각 스페이스를 비우고 세미콜론이 있으면, 그 이후도 코멘트가 된다.

「/*」(으)로 시작되는 행과 「*/」라고 하는 내용의 행의 사이도 코멘트가 된다.

값의 데이터 형식

커멘드의 인수로서 사용되는 데이터는, 모두 문자열로서 보관 유지된다.
일정한 서식에 합치하는 문자열의 경우, 정수·소수·일자 시각으로서 계산등에서 사용할 수 있다.
「100」(이)나 「0xFFFF」(와)과 같은 것이 정수치, 「10.05」(이)나 「6.023e+23」(와)과 같은 것이 소수치, 「20061231235959」(와)과 같은 것이일자 시각(으)로서 다루어진다.
변수의 내용이 이러한 형식일지를 판정하려면 ,If var is [not] type(을)를 사용한다.
각 커멘드가 정수나 소수를 출력할 때는,SetFormat커멘드로 설정한 서식에 따라서 출력된다.
정수는 부호 첨부64비트 상당한 범위의 값을 취급할 수 있다.
소수는double상당한의 것이 취급할 수 있다.

a=this is string
MsgBox,%a%

b=10
b*=10
MsgBox,%b%

c=0.1
c*=4
MsgBox,%c%

d=20060101
EnvAdd,d,2,Days
MsgBox,%d%

변수

Var = 123abc			;변수 「Var」에 「123abc」라고 하는 값을 대입
MsgBox,Var is %Var%		;「Var is 123abc」라고 표시된다

이름이 붙은 「변수」에 데이터를 격납해 둘 수 있다.
변수명에는 알파벳, 숫자, 「_」등의 문자를 사용할 수 있다.
「Var=this is value」(와)과 같이 쓰는 것으로, 변수에 값을 격납할 수 있다.
변수에 격납한 값은, 「%Var%」(와)과 같이 커멘드의 인수중에 묻는 것으로, 내용을 전개해 사용할 수 있다.
같은 값을 복수의 장소에서 사용하고 싶을 때 등, 여러가지 목적으로 사용된다.

FileRead,Var,test.txt		;test.txt의 내용이 읽혀 변수 「Var」에 격납된다

또, 커멘드에 따라서는, 처리의 결과등을 변수에 격납하는 일이 있다.
많은 경우, 인수로서 격납처의 변수의 변수명을 지정할 수 있다.

VarName=FileContent
FileRead,%VarName%,test.txt		;격납처 변수는 「FileContent」
MsgBox,%FileContent%			;읽어들인 내용이 표시된다

격납처의 변수명을 지정하는 인수에서도, 「%Var%」(와)과 같은 변수 전개를 사용할 수 있다.
이 테크닉은, 불특정 다수의 데이터를 취급할 때 등에 도움이 되는 일이 있다.

EnvSet,TestEnv,this is a test env
Run,%ComSpec% /K set TestEnv 		cmd.exe하지만 기동해,TestEnv에 격납된 내용을 표시한다

변수와는 별도로, 환경 변수도 취급할 수 있다.EnvSet커멘드로 환경 변수에 대입을 실시할 수 있다.
이 환경 변수는,Run커멘드등에서 기동한 프로그램내로부터 참조할 수 있다.
「%Var%」(와)과 같은 변수의 전개에서는, 통상의 변수와 같이 환경 변수도 전개할 수 있지만, 미정도리의 변수는 길이0의 문자열에 전개된다.
#NoEnv」지령을 사용하는 것으로, 환경 변수의 참조를 무효화해, 처리 효율을 높일 수 있다.
이 경우에서도, 「EnvGet」커멘드를 사용하면, 환경 변수의 값을 읽어들이는 것은 가능하다.

미리 준비된 편입 변수로 불리는 변수도 있다.
사용할 수 있는 편입 변수에 대해서는,편입 변수의 항을 참조.
많은 편입 변수는 대입에 의해 직접 변경하는 것은 할 수 없다.
잘 사용되는 편입 변수로서 커멘드의 실행 결과를 격납한다ErrorLevel변수가 있다.

변수에 값을 격납하면, 값의 용량보다 약간 좀 많은 메모리가 확보된다.
이것은, 내용의 변경으로 용량이 많아졌을 때, 하나 하나 메모리를 다시 확보할 필요가 없게 하기 위한(해)이다.
「var=」라고 하도록(듯이), 하늘의 값을 할당하는 것으로, 할당할 수 있었던 메모리를 개방할 수 있다.
하나의 변수의 용량의 상한은64KB까지되고 있지만,#MaxMem지령으로 변경할 수 있다.

변수의 계산

변수가 수치의 경우,EnvAdd, EnvSub, EnvMult, EnvDiv커멘드로 사칙 연산을 실시할 수 있다.
이것들 커멘드의 생략형으로서 「+=」,「-=」,「*=」,「/=」(이)가 사용할 수 있다.
좌변에는 변수명이 오지만, 우변에는 값이 오지 않으면 안 되기 때문에, 「%」(으)로 사이에 두어 변수의 내용을 전개하도록(듯이) 할 필요가 있다.

posX = 0
posX += %speedX%

이러한 커멘드에서는, 제1인수와 제2인수의 어느쪽이나가 정수라면 결과는 정수에, 어느 쪽인지 한편에라도 소수 형식의 값이 포함되어 있으면 결과는 소수가 된다.
정수로 제산을 실시해 결과를 소수로 얻고 싶은 경우, 다음과 같이 소수 형식의 값으로 나누어 줄 필요가 있다.

var=10
var/=3.0

또,0(을)를 더하는 등의 결과가 변하지 않는 계산을 실시하는 것으로, 형식의 변환만을 실시할 수 있다.

SetFormat,FLOAT,0.0	;소수의 소수점 이하를 잘라 버리도록(듯이) 한다
var+=0		;var의 내용이 정수 형식에 변환된다
var+=0.0	;var의 내용을 소수 형식에 변환

「:=」에 의한 대입이나 「If()」에 의한 조건 분기등에서는, 복잡한 식을 사용할 수도 있다.
1회의 사칙 연산 뿐이라면 「v:=v+1」보다 「v+=1」(분)편이 고속으로 실행되지만,2회이상의 연산은 복수의 커멘드로 나누는 것보다 하나의 식으로 하는 것이 고속으로 실행될 가능성이 있다.

문자열 처리

「StringTrimLeft」 등, 「String」(으)로부터 시작되는 커멘드에서는, 문자열의 시작이나 분할등의 문자열 처리를 실시할 수 있다.
문자열을 차례로 줄서 바꾸는 「Sort」커멘드 등도 있다.
또,Transform커멘드의 서브 커멘드 「Deref」에서는, 「value is %var%」(와)과 같은 문자열의 변수 참조를 전개시킬 수 있다.
템플릿 파일에 항목을 묻거나 하는데 이용할 수 있다.

조건 분기 커멘드

If커멘드로 조건 분기를 실시할 수 있다.
비교 조건은,if var = value그렇다고 하는 형태로 기술할 수 있다.
비교 연산자는, 「=」, 「<>」(not equal), 「>」 「<」 「>=」 「<=」(이)가 사용할 수 있다.
좌변에는 변수명이 오지만, 우변에는 값이 오지 않으면 안 되기 때문에, 「%」(으)로 사이에 두어 변수의 내용을 전개하도록(듯이) 할 필요가 있다.

If MyVar > %Max%
	MsgBox,over
else
	MsgBox,not over

그 외에도, 몇개의 조건문을 사용할 수 있다.

If/IfEqual/IfNotEqual/IfLess/IfLessOrEqual/IfGreater/IfGreaterOrEqual
변수의 비교(「=」 「<>」 「>」 「<」 「>=」 「<=」와 같다)
if(식)
식의 결과의 값에 의해서 분기
IfExist / IfNotExist
파일의 존재의 유무
IfInString / IfNotInString
문자열중으로 지정의 문자열이 포함될지
If var [not] in values / If var [not] contains values
var의 내용이values에 열거한 문자열과 일치할지
If var is [not] type
변수의 데이터 형식
IfMsgBox
제일 최근의MsgBox커멘드로 밀린 버튼
IfWinActive
지정한 윈도우가 액티브할지
IfWinExist
지정한 윈도우가 존재할지

반복 처리

Loop문장으로 반복 처리를 사용할 수 있다.
반복 회수나, 대상 데이터는편입 변수(으)로서 취득할 수 있다.
복수행의 처리를 반복할 때는,Continue커멘드로 나머지의 처리를 스킵 해 다음의 회의 실행으로 옮길 수 있다.
또,Break커멘드에서는 반복을 즉석에서 종료할 수 있다.

많은 프로그램 언어에 존재한다while구문이나for구문에 해당하는 것은 없기 때문에,If커멘드나Break커멘드를 사용해 자기 부담으로 기술할 필요가 있다.

반복에는, 이하의 종류가 있다.

Loop
지정 회수의 반복
LoopFile
와일드 카드 등에 매치하는 파일이나 폴더 각각 대하는 처리
LoopReg
레지스트리의 지정 키 이하의 키에 대한 처리
LoopReadFile
파일을1행씩 읽으면서 처리
LoopParse
문자열의1문자마다, 혹은 지정의 단락 기호로 단락지어진 필드 마다 처리

써브루틴 호출해, 점프

Goto커멘드를 실행하면, 지정한 라벨의 행에 점프 하고, 그 다음의 행으로부터를 실행시킬 수 있다.
또,Return커멘드로 점프 원래대로 돌아갈 수 있다Gosub커멘드도 있다. Goto문장을 너무 다용하면 프로그램을 알 수 있기 힘들어지므로, 가능한 한 사용하지 않는 것이 좋다.

함수(을)를 사용하면, 호출해 먼저 인수를 건네주거나 돌아가 값을 되돌리거나 다른 장소의 변수와 격리된 로컬 변수를 사용하거나 할 수 있다.

스렛드 세치기

이하의 커멘드로 라벨을 지정해 두면, 특정의 이벤트가 발생했을 때에 그 써브루틴이 불려 가게 된다.
이러한 써브루틴 호출에서는,스렛드의 세치기를 한다.

SetTimer
타이머에 정기적으로 실행되는 써브루틴을 지정
Menu
커스텀 메뉴를 작성해, 선택되었을 때에 실행되는 써브루틴을 지정
GUI
GUI(을)를 작성해, 버튼이 밀렸을 때 등에 실행되는 써브루틴을 지정
OnExit
스크립트가 종료할 경우에 실행되는 써브루틴을 지정
Hotkey
지정된 hot key가 밀렸을 때에 실행되는 써브루틴을 지정
핫 스트링
특정의 문자열을 타이프 쳤을 때에 써브루틴이 실행되도록(듯이) 설정

이스케이프 문자

커멘드의 인수 중(안)에서 특별한 의미가 있는 기호를 포함한 문자열을 취급하고 싶은 경우는, 기호의 전에 이스케이프 문자를 붙여 이스케이프 할 필요가 있다.
많은 프로그램 언어에서는 「\」(이)가 이스케이프 문자로서 사용되고 있지만,AutoHotkey그럼 파일 패스의 「\」의 이스케이프의 필요를 없애기 위해 「`」(Shift+@)하지만 사용된다.
이하와 같은 escape sequence가 있다.
그 이외의 문자를 이스케이프 했을 경우, 그 문자 자신이 된다.(례:「`x」→「x」)
#EscapeChar지령그리고 이스케이프 문자를 변경할 수 있다.

escape sequence 일람
기호 의미
`, 「,」(콤마)의 문자.
커멘드의 단락과 구별하기 위해(때문에), 이스케이프가 필요.
덧붙여 커멘드의 마지막 인수내에서는, 문자로서의 콤마인 것이 자명하기 때문에, 콤마를 이스케이프 할 필요는 없다.
`; 「;」(세미콜론)의 문자.
반각 스페이스인가Tab문자의 다음에 오는 경우만, 코멘트의 개시 기호와 구별하기 위해서 이스케이프 할 필요가 있다.
`:: 문자열 「::」(코론 둘).핫 스트링등에서 사용.
`% 「%」(퍼센트 기호)
`n 개행(LF/0x0A)
`r 복귀(CR/0x0D)
`t Tab문자(0x09)
`v 수직Tab(0x0B)
`b BackSpace문자(0x08)
`a Bell문자(0x07)
`f 개페이지(0x0C)
`` 「`」자신.
(이스케이프 문자2개로 이스케이프 문자 자신이 된다.)

스크립트의 기동과Auto-execute섹션

스크립트는 읽어들여 때에 해석되어최적화된다.
문법 에러는 읽어들여 때에 체크되어 수정될 때까지 실행할 수 없다.

스크립트가 읽히면, 최초로Return인가Exit하지만 실행되는지,hot key 라벨하지만 기술되고 있는 행이나 스크립트의 마지막에 이를 때까지, 스크립트가 실행된다.
이 부분을,auto-execute섹션이라고 부른다.

hot key를 할당할 수 있거나#Persistent지령,Lock계 키의 고정등에서 상주 상태로 되지 않는 경우,auto-execute섹션이 종료한 시점에서 스크립트는 종료한다.

hot key,커스텀 메뉴 아이템,타이머그리고 기동된다스렛드그럼, 아래와 같은 커멘드로 설정되는 값은 각각 독립하고 있다.
이러한 초기치는Auto-execute섹션으로 설정할 수 있다.
설정을 하기 전에 스렛드가 불려 가면, 기대한 동작이 되지 않는 것이 있으므로,Auto-execute섹션의 가능한 한 최초의 분으로 설정하면 좋다.

스크립트의 디버그

스크립트가 기대 대로에 동작하고 있는지를 확인하려면 , 스크립트의 요소 요소에MsgBox커멘드를 넣고, 동작 상황이나 변수의 내용을 표시하면 좋다.
그 밖에도,ListVars커멘드와Pause커멘드로 변수의 내용을 정리해 표시한다고 하는 방법도 있다.
이러한 디버그는, 액티브 윈도우가 바뀌어 버리면 정상적으로 동작하지 않는 듯한 곳에서는 사용할 수 없기 때문에 주의가 필요하다.

AutoHotKey(오토핫키) 설명서 Remap

Posted by 발전소장
2014. 8. 13. 16:35 AutoHotKey

Remap

「키A::키B」라고 하는 행을 기술하면, 키A에 키B(을)를 할당할 수 있다.
예를 들면, 이하와 같이 하면, 「A」키를 눌렀을 때에 「b」(이)가 입력되게 된다.

a::b

이 때,Shift+A하Shift+B에,Ctrl+A하Ctrl+B에와 같이, 모든 상태로 키의 변환이 유효하게 된다.

키A, 키B에는, 「^c」(와)과 같은 수식 키와의 편성이나, mouse button, 「vkXX」(이)나 「scYYY」(와)과 같은 키코드도 지정 가능.
다만,WheelUp/WheelDown(은)는 사용할 수 없다.
또, 「a & b」(와)과 같은 콤비네이션 키도 사용할 수 없다.
아래와 같은 예에서는,X2버튼을 누르면Ctrl+C하지만,Shift+X2버튼에서는Ctrl+Shift+C하지만 입력되게 된다.

XButton2::^c

이하의 예에서는,Shift(을)를 누르면서A(을)를 눌렀을 때는, 「B」(이)가 입력된다.

+a::b

키B에 「Return」라고 쓰면return커멘드라고 인식되므로,Enter키를 할당하고 싶은 경우는 「Enter」라고 쓰는 것.

키B에 「%」(을)를 지정할 수 없다.「vk35」(으)로 대용할 수 있다.

Remarks

#IfWin...지령을 사용하는 것으로, 특정의 윈도우에서만 리맵을 유효화 당한다.

키A(을)를 눌러 내리고 있는 마나카, 키B하지만 눌러 내려지고 있는 상태가 된다.
키A, 키B하지만 함께 키보드의 통상 키의 경우는, 키 반복에 의한 반복 입력이 발생한다.
키A하지만 mouse button의 경우, 키B하지만 통상 키여도 키 반복은 발생하지 않는다.

리맵에 의해서 생성된 입력으로는, 훅을 사용하고 있는 hot key(「$^c」 등)(은)는 반응하지 않는다.

키B의 이벤트의 생성에는,AutoExecute섹션의 종료시점으로SendMode그리고 설정되어 있던 방식이 사용된다.
다만,Play모드에서는 일부의 키가 정상적으로 동작하지 않기 때문에, 가능한 한Input모드인가Event모드(디폴트)(을)를 사용하는 것.

「a::b」라고 하는 리맵을 기술했을 경우, 「*a::」와「*a up::」라고 하는 hot key의 조가 작성된다.
Suspend커멘드를 실행했을 때는, 리맵도 통상의 hot key와 같게 무효가 된다.
또, 이하와 같이 하면 리맵을 개별적으로 무효화할 수도 있다.

Hotkey, *a, off
Hotkey, *a up, off

이 리맵 기능은,Windows9x계에서는 사용할 수 없다.

AutoHotKey(오토핫키) 설명서 RegEx

Posted by 발전소장
2014. 8. 13. 16:34 AutoHotKey

정규 표현

AutoHotkey v1.0.45이후에서는,RegExMatch()(와)과RegExReplace()그리고, 정규 표현에 의한 검색·치환을 실시할 수 있다.
또,SetTitleMatchMode그리고RegEx(을)를 지정하면, 윈도우의 타이틀등의 지정에 정규 표현을 사용할 수 있다.

AutoHotkey그리고 준비되어 있는 정규 표현은,Perl 5에 탑재되고 있는 것과 대체로 호환의PCRE(Perl Compatible Regular Expressions)이다.
이하로 설명하는 표현을 사용하는 것으로, 여러가지 텍스트를 하나의 패턴 문자열로 검색할 수 있다.

특수한 문자 표현

특수한 문자는, 직접 정규 표현중에 묻어도 인식되지만, 이하의 표현에서도 나타낼 수 있다.

\C 임의의1아르바이트
\a알람, 벨 문자(\x07)
\e이스케이프 문자(\x1b)
\f개페이지(\x0c)
\n개행(\x0a)
\r왕복대 리턴(\x0d)
\tTab(\x09)
\cX각종 제어 문자.
X그리고 지정한 문자의ASCII코드의 상위2비트를0(으)로 한 문자.(Control-X)
예를 들면, 「\cJ」(은)는 「\n」(을)를 나타낸다.
\xHH HH그리고 지정되었다16진수로 나타내진다1아르바이트.
예를 들면, 「\x0a」(은)는 개행 문자(\n)(을)를 나타낸다.

또,.*?+[{|()^$\등의 기호는, 「\.」(이)나 「\[」(와)과 같이, 전에 「\」(을)를 붙여 이스케이프 할 필요가 있다.
그 이외의 문자는, 「\」(을)를 붙여도 붙이지 않아도 같게 된다.
예를 들면, 「\@」(은)는 「@」(을)를 나타낸다.
다만, 「X」옵션이 유효하게 되어 있는 경우는, 「\v」 등, 의미의 준비되어 있지 않은 알파벳을 이스케이프 하면 에러가 된다.

복수의 문자의 어떤 것인지를 의미하는 표현

이하와 같은 표현을 이용하는 것으로, 조건에 일치하는 문자1문자를 나타낼 수 있다.

.개행을 제외한 임의의 문자
「s」옵션이 지정되어 있는 경우는, 개행도 포함한다.
\w 1문자의 단어 구성 문자([0-9a-zA-Z_])
\W 단어 구성 문자 이외의1문자
\d 1문자의 반각 숫자([0-9])
\D 반각 숫자 이외의1문자
\s 1개의 반각 스페이스
\S 반각 스페이스 이외의1문자
[char-list] char-list안에 열거되고 싶은 차이인가의 문자
[^char-list] char-list안에 열거된 문자 이외의 임의의 문자

char-list에는, 단지 문자를 열거할 뿐만 아니라, 이하와 같은 표현도 사용 가능하다.
이것들은, 복수 조합해 늘어놓을 수도 있다.

c1-c2
c1(으)로부터c2의 사이의 문자(례:「0-9」)
\s,\S,\w,\W,\d,\D,\xHH
[:alnum:]
알파벳과 숫자
[:alpha:]
알파벳
[:word:]
단어 구성 문자
[:blank:]
공백 문자(스페이스, 탭등)
[:cntrl:]
제어 문자
[:digit:]
십진수자
[:graph:]
인자 가능한 동시에 표시 가능한 문자(스페이스는 인자 가능하지만 표시 가능하지 않다)
[:lower:]
알파벳의 소문자
[:print:]
인자 가능한 캐릭터(=제어 문자 이외의 캐릭터)
[:punct:]
구두점(통상의 문자, 숫자, 제어 문자, 스페이스의 머지않아도 아닌 캐릭터)
[:space:]
스페이스, 탭, 개페이지
[:upper:]
알파벳의 대문자
[:xdigit:]
십육진수자

반복을 나타내는 정규 표현

몬지, 몬지 클래스, 식 집합의 뒤로 이하의 양지정자를 붙이면, 패턴의 반복을 나타낼 수 있다.
예를 들면, 「\d+」(은)는1문자 이상의 반각 숫자에, 「(ab){1,3}」(은)는 「ab」또는 「abab」또는 「ababab」에 매치한다.

?1회 또는0회
*0회이상
+1회이상
{n,m}n회이상m회이하
n(와)과m의 상한은65536
{n,}n회이상
{,n}0회이상n회이하 ({0,n})
{n}n회

덧붙여 통상의 양지정자는 「탐욕」이며, 복수의 매치 결과를 생각할 수 있는 경우, 제일 길게 매치하는 것이 채용된다.
「??」(이)나 「+?」, 「{1,5}?」(와)과 같이 양지정자의 뒤에 「?」(을)를 붙이면, 「무욕」이 되어, 제일 짧게 매치하는 것을 채용한다.
예를 들면, 「aaa<b>bbb</b>ccc」(을)를 타겟으로 「<.*>」(을)를 검색했을 경우, 「<b>bbb</b>」에 성냥 해 버린다.
「<.*?>」(을)를 검색하면, 「<b>」에 매치한다.

「?+」(이)나 「*+」, 「{1,5}+」(와)과 같이, 양지정자의 뒤에 「+」(을)를 붙이면, 「탐욕」이 되어, 뒤로 계속 되는 패턴에 관계없이 반드시 제일 길게 매치한 것을 채용하게 된다.
예를 들면, 「---abcdef---」(을)를 타겟으로 「\w+f」(을)를 검색하면 매치하지만, 「\w++f」(을)를 검색하면 성냥 하지 않는다.「\w++」(이)가 어쨌든지 「abcdef」까지를 채용하려고, 후에 계속 되는 정규 표현에 「f」(을)를 양보하려고 하지 않기 때문이다.

특정의 장소에 매치하는 표현

이하의 표현은, 문자는 아니고 장소에 매치한다.
예를 들면, 「^」(은)는 「문자열의 선두의 문자」가 아니고, 「선두의 문자의 전」에 매치한다.

^ 문자열의 선두.
「m」옵션이 지정되어 있는 경우는, 각 행의 줄머리.
$ 문자열의 말미.
다만, 말미가 개행이었던 경우, 그 직전에 성냥.(「D」옵션이 지정되어 있는 경우는, 진짜 말미에 성냥)
「m」옵션이 지정되어 있는 경우는, 각 행의 줄 끝.
\A 「m」옵션의 유무에 관계없이, 문자열의 선두
\Z 「m」옵션의 유무에 관계없이, 문자열의 말미.
다만, 말미가 개행이었던 경우, 그 직전에 성냥.(「D」옵션이 지정되어 있는 경우는, 진짜 말미에 성냥)
\z 「m」옵션이나 「D」옵션의 유무에 관계없이, 문자열의 진짜 말미
\G 검색의 개시 위치.
RegExMatch()의StartingPos그리고 지정한 위치.
RegExReplace()에 있어서의2채워 이후의 치환에서는, 전회 매치한 범위의 직후가 된다.
\b 단어의 단락.
\w(단어 구성 문자)에 해당하는 문자와\W(비단어 구성 문자)에 해당하는 문자가 서로 이웃이 되고 있는 장소
\B 단어의 도중.
\w(단어 구성 문자)에 해당하는 문자가 서로 이웃이 되고 있는 장소

선택

|」(으)로 단락짓는 것으로, 복수의 정규 표현중 어떤 것이나 하나에 매치하는 문자열을 검색할 수 있다.
Shift|Ctrl|Alt」(와)과 같이,3개이상을 늘어놓아도 괜찮다.
정규 표현의 도중에 짜넣고 싶은 경우는, 후술의 그룹화를 사용해, 「(Shift|Ctrl|Alt)+[A-Z]」(와)과 같이 한다.

regexp1|regexp2 regexp1(와)과regexp2의 어딘가에 성냥

덧붙여 「|」(으)로 단락지어 늘어놓을 수 있었던 정규 표현은, 제일 왼쪽의 것으로부터 테스트되어 최초로 매치한 것보다 오른쪽의 것은 테스트되지 않는다.
예를 들면, 「Auto(\w+)」와「(\w+)Hotkey」(은)는 모두 「AutoHotkey」에 매치하지만, 「Auto(\w+)|(\w+)Hotkey」(을)를 「AutoHotkey」에 성냥 시켰을 경우, 「(\w+)Hotkey」의 부분은 사용되지 않고, 「\2」(은)는 비운다.

그룹화

정규 표현을 「(」 「)」(으)로 둘러싸는 것으로 그룹화 할 수 있다.
정규 표현의 도중에 「|」에 의한 선택등을 포함하고 싶은 경우나, 매치한 문자열을 후술의 후방 참조로 사용하고 싶은 경우 등에 사용한다.

(regexp)그룹화 해, 번호에 관련 짓는다
번호는, 「(」의 출현한 차례로1(으)로부터 할당해진다.
(?P<name>regexp) 그룹화 해,name그리고 지정한 이름에 관련 짓는다.
동시에, 번호에도 관련지어를 한다.
(?:regexp)그룹화만 실시해, 번호에 관련지어 하지 않는다
(?>regexp)regexp(을)를 검색하지만, 매치한 뒤 백 트럭 하지 않는다(탐욕)
번호에는 관련지어 되지 않는다
(?:regexp){1}+」라고 거의 같다.

그룹에 매치한 문자열의 호출(후방 참조)

이하의 표현을 사용하는 것으로, 그룹화 된 정규 표현에 매치한 문자열과 같은 문자열을 검색할 수 있다.
예를 들면, 「<(\w+).*?>.*?</\1>」(은)는, 임의의HTML태그로부터 대응하는 종료 태그까지의 문자열에 매치한다.

\num num그리고 지정한 번호에 관련 지을 수 있었던 그룹에 마지막에 매치한 문자열과 같은 것에 성냥(\1~\99)
(?P=name) name그리고 지정한 이름에 관련 지을 수 있었던 그룹에 마지막에 매치한 문자열과 같은 것에 성냥

예측·돌아와 읽기

예측에서는, 직후에 특정의 패턴에 일치하는 문자열이 존재하는 장소에 매치한다.
일단처의 문자열을 조사한 뒤, 원의 장소로 돌아오므로 「예측」이라고 한다.
이 기능을 이용하는 것으로, 복잡한 조건으로 검색하거나 치환의 정규 표현을 간략화하거나 할 수 있다.

(?=regexp) regexp에 매치하는 문자열의 직전에 성냥
(?!regexp) regexp에 매치하는 문자열의 직전이 아닌 장소에 성냥
(?<=regexp) regexp에 매치하는 문자열의 직후에 성냥
regexp(은)는 길이가 미리 확정하고 있는 정규 표현이 아니면 안 된다
(?<!regexp) regexp에 매치하는 문자열의 직후가 아닌 장소에 성냥
regexp(은)는 길이가 미리 확정하고 있는 정규 표현이 아니면 안 된다

재귀 호출

이하의 표현을 사용하는 것으로, 정규 표현의 전부 또는 일부를 호출해 사용할 수 있다.
이 호출은, 호출하는 정규 표현 자체안에 기술할 수도 있다.
예를 들면, 「외모로 둘러싸인 문자열」이라고 하는 정규 표현안에, 그 정규 표현의 재귀 호출을 짜넣는 것으로, 외모가 상자가 된 문자열을 올바르게 검색할 수 있다.

(?R) 정규 표현 전체를 재귀 호출
(?num) 번호 지정으로 그룹을(재귀)호출(「(?1)」~ 「(?99)」)
(?P>name) 이름 그룹을(재귀)호출

조건 분기

조건에 일치할 때만 특정의 패턴을 검색하거나 조건에 따라 검색하는 패턴을 바꾸거나 할 수 있다.

(?(condition)yes-regexp|no-regexp) condition하지만 진정한 때는yes-regexp, 가짜 때는no-regexp(을)를 사용하고 매칭을 실시한다
(?(condition)yes-regexp) condition하지만 진정한 때는yes-regexp(을)를 사용하고 매칭을 실시하지만, 가짜 때는 아무것도 실시하지 않는다.
「(?(condition)yes-regexp|)」와 같다.

condition에 숫자나 이름을 지정했을 경우는, 그 정규 표현 그룹에 매치하는 것이 있었을 때에 실로 된다.
예측이나 돌아와 읽기의 조건을 기술할 수도 있다.

또, 「R」(을)를 지정했을 경우는, 재귀 호출로 불려 가고 있을 때에 실로 된다.
이것에 의해,1단계만 상자가 되어 있는 문자열을 검색할 수 있다.

옵션의 부분적 변경

후술의 옵션은, 정규 표현의 도중에 일부만 다른 설정으로 변경할 수도 있다.

(?imsxUX-imsxUX)이후의 옵션을 변경
(?imsxUX-imsxUX:regexp) regexp의 부분의 옵션을 변경

imsxUX-imsxUX에는ON(으)로 하는 옵션과OFF(으)로 하는 옵션을 기술한다.
예를 들면, 「i」(으)로 하면 「i」옵션이ON에, 「-i」(으)로 하면 「i」옵션이OFF(이)가 된다.
「i-s」라고 하면 「i」옵션이ON(이)가 되면서 「s」옵션이OFF(이)가 된다.

코멘트

(?#text)정규 표현중에 코멘트를 묻을 수 있다.
코멘트가 되어 있는 부분은, 실제로는 무시된다.
덧붙여text에 「)」(을)를 포함하는 것은 할 수 없기 때문에 주의.

옵션

AutoHotke의 정규 표현에서는, 패턴의 최초로 「)」(으)로 단락지어 옵션을 지정한다.
준비되어 있는 옵션은 이하와 같다.

i
반각 알파벳의 대문자·소문자를 구별하지 않는다
m
「^」와「$」(이)가 각 행의 줄머리·줄 끝에 성냥 하게 된다.
s
.」(으)로 개행 문자도 매치하도록(듯이) 한다
x
패턴중의 공백 문자(반각 스페이스,Tab문자, 개행 문자)라고 「#」(으)로부터 줄 끝까지의 문자열을 무시한다.
「[]」 안의 문자는, 무시되지 않는다.
긴 정규 표현을 텍스트 파일 등에 기술하고, 코멘트등을 포함하고 싶은 경우에 사용한다
A
매치 개소의 시작이 검색 개시 위치와 일치하고 있지 않으면 안 되게 한다
D
문자열의 말미가 개행이었다고 나무에서도, 「$」(이)가 문자열의 진짜 말미에 매치하도록(듯이) 한다.
「m」옵션이 지정되어 있을 때는 무시된다.
J
동명의 이름 포획식 집합을 허가한다
U
「*」 「+」 「?」 「{n,m}」등의 양지정자의 디폴트를 무욕(가능한 한 짧은 것에 성냥)(으)로 한다. 반대로, 「*?」 「+?」 「??」 「{n,m}?」 등은, 탐욕(가능한 한 긴 것에 성냥)(이)가 된다.
X
Perl에는 없다PCRE독자적인 기능을 유효하게 한다.
통상은, 「\g」(와)과 같이 특별한 의미의 준비되어 있지 않은 알파벳을 「\」(으)로 이스케이프 했을 때, 「g」(을)를 나타내고 있는 것으로 간주하지만, 「X」옵션이 지정되어 있으면, 정규 표현 구문 에러로서 다루어진다.
장래의PCRE의 확장으로 「\g」에 특별한 의미가 주어졌을 때에 이상이 발생하는 것을 예방할 수 있다.
S
시간을 들여 상세하게 패턴을 분석하는 대신에, 매칭 처리를 고속화한다.
복잡한 정규 표현을 몇번이나 사용하는 경우에 유효.
한 번 분석된 정규 표현은, 최대로100개까지 캐쉬되고, 같은 정규 표현을 사용할 때에 분석 처리를 생략 할 수 있다.
`n
.」기호나, 「m」옵션, 「D」옵션등에서 「개행」으로서 다루어지는 문자를 「`n」(으)로 한다.
디폴트는 「`r`n」.
`r
개행을 「`r」(으)로 한다.

2아르바이트 문자에의 대응

가명이나 한자등의2아르바이트 문자는 고려되지 않는다.