728x90
728x90
오토핫키란?
매크로 기반 스크립트 언어
오토핫키 설치하기
1. 오토핫키 설치
2. 편집기 설치
- 편집기 한글 깨짐 현상 : Tools > SciTE4AutoHotkey settings... > File codepage > Korean Wansung 수정
- 실행은 F5키, 배포는 .exe 확장자로 변환 후 컴파일해서 배포
- 컴파일 방법 : 스크립트 파일 저장 후 바탕화면에서 파일 우클릭>Complie Script
오토핫키 기본문법
- 오토핫키 한 줄은 명령어 + 매개변수의 조합
- 명령어와 매개변수, 매개변수와 매개변수 사이에는 콤마( , )를 사용해서 구분
- 명령어는 하나만, 매개변수는 여러개 가능 (AAAA: 명령어, 나머지 매개변수)
- 매개변수에 [ 대괄호 ] 가 쳐져있다면 생략 가능
AAAA, BBBB, CCCC, DDDD
변수에 값을 넣는 대입 연산자 작성법
var := 100
MsgBox, %var%
- var라는 변수에 1을 대입한다는 뜻
- 변수를 사용 시 % 기호로 변수를 감싸서 변수임을 표시
- 산술연산자, 비교연산자는 일반적 문법과 같음
문자를 출력해주는 MsgBox : 알림창으로 Hello World 띄우기 (실행은 F5키)
MsgBox [, Options, Title, Text, Timeout]
Msgbox, Hello World!
- Options에 숫자를 넣어 어떤 버튼과 아이콘을 표시할 지를 결정
- 다른 유형의 옵션끼리 수를 더해서 두가지 옵션을 동시에 구현할 수 있음
번호 | 옵션 | 번호 | 옵션 |
0 | 확인 버튼만 표시 | 16 | 금지(X) 아이콘 표시 |
1 | 확인 / 취소 버튼 표시 | 32 | 물음표(?) 아이콘 표시 |
2 | 중단 / 다시 시도 / 무시 버튼 표시 | 48 | 주의(!) 아이콘 표시 |
3 | 예 / 아니오 / 취소 버튼 표시 | 64 | 정보(i) 아이콘 표시 |
4 | 예 / 아니오 버튼 표시 | 262144 | MsgBox가 항상 위에 있도록 하기 |
5 | 다시 시도 / 취소 버튼 표시 | ||
6 | 취소 / 다시 시도 / 계속 버튼 표시 |
MsgBox, IfMsgBox
- MsgBox의 버튼에 따라서 다른 행동을 하게 하려면 IfMsgBox라는 명령어를 사용
IfMsgBox, ButtonName
번호 | 옵션 | 번호 | ButtonName |
0 | 확인 버튼만 표시 | 확인 | OK |
1 | 확인 / 취소 버튼 표시 | 취소 | Cancel |
2 | 중단 / 다시 시도 / 무시 버튼 표시 | 중단 | Abort |
3 | 예 / 아니오 / 취소 버튼 표시 | 다시시도 | Retry |
4 | 예 / 아니오 버튼 표시 | 무시 | Ignore |
5 | 다시 시도 / 취소 버튼 표시 | 예 | Yes |
6 | 취소 / 다시 시도 / 계속 버튼 표시 | 아니오 | No |
계속 | Continue |
IfMsgBox와 MsgBox를 합치면
MsgBox [, Option, Title, Text, Timeout]
IfMsgBox, ButtonName
{
// 버튼을 눌렀을 때 할 것
}
이스케이프 시퀀스
- 뒤에 오는 문자가 특수한 기능을 할 경우 해당 특수 기능을 없애서 글자처럼 사용
- ' : 오토핫키의 이스케이프 시퀀스
- 'n : rogodanswk
핫키와 핫스트링
- 핫키 : 어떤 키를 눌렀을 때 동작을 실행하게 할 단축키
- A 키를 누르면 대화상자가 출력
- 핫키를 여러개 조합하려면 아래 표의 문자로 대체
키::
A::
MsgBox, 안녕!
+!Z::
→ Shift + Alt + Z를 눌렀을 때
조합키 | 문자 |
Ctrl | ^ |
Shift | + |
Alt | ! |
Windows | # |
- 핫스트링 : 특정 문자 입력 시 동작을 실행
- apple을 입력하고 엔터키를 누르면 대화상자가 출력
::문자열::
::apple::
MsgBox, 사과!
- 스크립트가 끝나도 수동종료 : 작업표시줄 트레이 아이콘 우클릭 > Exit
- 자동종료 명령어 : ExitApp (매개변수 없음)
ExitApp
- F1을 누르면 대화상자가 뜨면서 자동 종료되는 구문
F1::
MsgBox, 핫키를 눌렀습니다.
ExitApp
return
- 스크립트 정지o 종료x
- 각각 정지하며 F3을 눌렀을 때 비로소 스크립트 종료
F1::
MsgBox, F1을 눌렀습니다
return
F2::
MsgBox, F2를 눌렀습니다
return
F3::
Exitapp
Send : 키보드 대리 입력키
- 키는 중괄호로 감쌀 것
- 키에 핫키에서 배운 조합키를 이용할 수도 있음
- 조합키의 영문자는 반드시 소문자 사용
- 키는 문자열과 혼합해서 사용 가능
- 조합키 단축기능 말고 문자 그대로 출력 시 SendRaw 사용
- 누르는 동작은 {A Down} 떼는 동작은 {A Up}이며 띄어쓰기 필수
- 방향키 : Up / Right / Left / Down
- 넘버 패드 : Numpad(기호명)
- 한영키 : {VK15}
- 조합키 : !a나 !{a}의 꼴 모두 허용. 소문자주의!
- 키 이름 뒤에 숫자를 적어서 중복 입력 구현 (Send, {A 5}는 A를 5번 누릅니다.)
Send, Keys
Send, {A}
Send, {Enter}
Send, {Tab}
Send, {Ctrl}
Sleep : 대기타기 (delay)
- 스크립트에 지연 시간 부여
Sleep, DelayInMilliseconds
Send, {A}
Sleep, 1000
좌표
- 스크린 좌표(절대 좌표) : Screen Coordinate. 현재 활성중인 창과 관계없이 무조건 원점(0,0)을 말함.
즉 모니터 최상단 좌측 - 상대 좌표 : Relative Coordinate. 활성창의 왼쪽 위를 원점(0,0)으로 설정하는 좌표체계
- 둘 중 좌표 체계 선택 : CoordMode (default는 Relative)
- TargetType : Pixel, Mouse
- RelativeTo : Screen, Relative
CoordMode, TargetType, RelativeTo
MouseMove : 마우스 대체 이동
MouseMove, X, Y [, Speed]
- X, Y에는 좌표가 들어감
- Speed : 0~100까지. 0 : 즉시이동, 2 : 기본속도
- 예제 : F1을 누르면 마우스 커서를 이동시키는 예제
CoordMode, Mouse, Screen
F1::
MouseMove, 500, 500
Sleep, 500
MouseMove, 700, 500
Sleep, 500
MouseMove, 700, 700
Sleep, 500
MouseMove, 500, 700
Sleep, 500
MouseMove, 500, 500
return
F2::
ExitApp
MouseClick : 마우스 대체 클릭
MouseClick [, WhichButton, X, Y, ClickCount]
CoordMode, Mouse, Screen
MouseClick, Left, 100, 100
Exitapp
MouseGetPos : 현재 마우스의 좌표 가져오기
MouseGetPos [, OutputVarX, OutputVarY]
CoordMode, Mouse, Screen
MouseGetPos, screenX, screenY
CoordMode, Mouse, Relative
MouseGetPos, relativeX, relativeY
CoordMode, Mouse, Client
MouseGetPos, clientX, clientY
MsgBox, 현재 마우스 좌표`n`n절대 좌표: %screenX%`, %screenY%`n상대 좌표: %relativeX%`, %relativeY%`n클라이언트 좌표: %clientX%`, %clientY%
Exitapp
반복문 : Loop
Loop [, Count]
Loop, 5
{
MsgBox, %A_index%회 반복했습니다.
}
ExitApp
- 반복문에서 반복할 부분은 중괄호로 감싼다
- 중첩 반복 가능
- 내장변수 A_index : 변수에 값을 대입하지 않아도 쓸 수 있으며 반복 횟수를 가리킴
- Break : 반복문 탈출 명령어
- 5단부터 7단까지 구구단을 대화상자에 띄워주는 예제
a := 4
b := 0
Loop, 3
{
a++
Loop, 9
{
b++
MsgBox, % a " x " b " = " a * b
}
b := 0
}
ExitApp
조건문 : if-else문, else-if문
if (var > 2)
{
// var 변수가 2보다 클 때는 이 곳을 거치며
}
else
{
// var 변수가 2보다 크지 않으면 이 곳을 거칩니다.
}
- % 기호를 쓸 때 : 변수
- 아닐 때 : 문자열, 괄호 안
- 문자열은 " " 로 감싸주기
시간을 표시하는 내장 변수
- A_Hour, A_Min, A_Sec
MsgBox, % "현재 시간: " A_Hour "시 " A_Min "분 " A_Sec "초"
아래 사이트를 보고 공부하면서 요약해보았습니다.
내용과 예시 출처 - 프날 : 세상에서 가장 쉬운 오토핫키 강좌
728x90
728x90