매크로

개요


오토핫키(AutoHotkey)는 특정키에 기능을 할당하는 등 반복되는 작업을 대신해주는 매크로를 만드는 오픈 소스 자유 소프트웨어이다. 사용자 스스로 코딩을 하여 어떤 응용 프로그램도 적용 시킬 수 있는 스크립트 언어이다.


AutoHotkey는 프로그램 동작을 스크립트로 기술한다. 단축 키에 동작을 할당하는 경우 뿐만 아니라 단순히 어떤 일을 처리할 경우에도 텍스트 편집기에서 처리 내용을 기술하고 실행하면 된다.


스크립트 파일은 "UTF-8" 형식으로 메모장 등으로 저장하면 된다. 변수에 값을 넣어 사용하거나 조건 분기, 반복, 서브 루틴, 호출 등의 명령으로 복잡한 처리를 시키는 것도 가능하다.


스크립트

스크립트는 기본적으로 1줄 1명령으로 1줄은 16,383바이트 이내로 기술한다.


커맨드는 커맨드 이름과 인수를 쉼표로 구분하여 기술한다.


커맨드 바로 뒤는 공백 문자로 구분하면 쉼표를 생략해도 된다.( 제1매개 변수에 공백을 지정하는 경우를 제외)


명령 인수로 문자열을 지정하는 경우에도 "등으로 묶지는 않고 그대로 기술한다. 단 함수 등의 식을 이용하는 경우 문자열은 인용 부호로 둘러쌀 필요가 있다.


"{"로 시작하면 "}"로 끝날 때 까지가 한 블록이다. 조건 분기, 반복 처리에서 복수의 명령을 실행할 경우에 사용한다.


명령어와 별도로 "#"으로 시작되는 프리 프로세서 지령과 같은게 있다.
이는 스크립트가 실행되기 전의 해석의 단계로 처리되므로, 인수에 변수 참조를 포함할 수 없다.


복수행에 걸친 식과 명령


; 예1) 명령어의 분리
MsgBox, 2
      , 다이얼로그타이틀
      , 메시지

PostMessage, msg            ; 주석을 적을 수도 있다
           , wParam
           , lParam
           ,, ahk_id %hwnd%

; 예2) 조건 마다 행을 나눈다
If (var1 == 100
   && var2 == 200)
{
   ; ...
}

; 예3) 복수 행에 걸쳐 함수를 기술
ret := DllCall("FunctionName"
             , "Ptr", &struct
             , "Int")

또한 복수행에 걸친 명령어는 스크립트의 실행시에는 모든 명령이 연결된 상태로 인식한다.

따라서 오류가 나왔을 때는 그 줄의 행 번호가 나오기 때문에 헷갈리지 말아야 한다.


히어 문서(heredoc)

히어 문서란 "("로 시작되는 행이 시작이고 ")"로 시작되는 행이 종료인 문서름 물한다. 내부(복수)행을 그대로 문자열로서 다루게 된다. 여기에는 문서 내의 개행도 포함된다.

MsgBox,this
(
 is
 long
) message

위 코드의 결과는

this is
 long message

로 출력된다.
히어 문서 안에서는 "%" 기호를 이용한 변수 사용이 유효하므로 다음과 같이 이용하는 것도 가능하다.

str = 
(
the quick brown %animal%
  jumps over the lazy dog 
)

또한 식(여기서:=연산자를 이용한 대입)에서도 이용이 가능하나 따옴표의 위치에 주의가 필요하다.

str := "
(
the quick brown " . animal . "
  jumps over the lazy dog 
)"

히어 문서는 최초의 "("에 이어 옵션 지정이 가능하다. 옵션은 반각 스페이스로 구분하여 복수 지정이 가능하다.
이용 가능한 옵션은 다음과 같다.

 JoinStr

각 행 간에 도입하는 문자열을 개행('n) 이외로 변경한다.

단순히 "Join"으로 지정하면 구별 문자 없이 연결된다.

 LTrim

각 행 간에 선두 스페이스나 Tab 문자를 무시한다. 

; 예)
If (foo = 100)
{
    MsgBox,
    (LTrim
       ~~~
       %A_Space%~~~
    )
}

인덴트가 있는 경우 스크립트에서는 이를 이용하면 가독성을 높일 수 있고,

행 첫머리의 공간 및 탭을 제외하고 싶지 않는 경우,
%A_Space%,%A_Tab%과 같이 특정 행의 인덴트를 남기도록 할 필요가 있다.

 RTrim0

 행 끝의스페이스와 Tab문자를 무시하지 않도록 한다.

 C

 ";"에 의한 행 주석, 행 끝 주석을 유효로 한다.

(C LTrim
  Abc def ghi ; 이것은 주석
  jkl mno pqr
)


 %

 "%"에 의한 변수 전개를 억제한다.

(%
변수 Var( = %Var% ) 는 전개되지 않는다.
)


 `

 `n,`t 등의 특수 문자가 그대로 출력된다.

 ,

 콤마(,)가 자동으로 "`,"로 무시되는 것을 억제한다 (명령 인수의 구별에 사용한다)




List of Articles
제목 글쓴이 최근변경 추천
Edit 과 v레이블 2 민영123 2023.07.03 0/0
핫키 핫스프링 민영123 2021.09.23 0/0
send,sleep 의 개념 민영123 2021.09.22 0/0
Exitapp, return 민영123 2021.09.22 0/0
오토핫키 픽셀서치 3 민영123 2023.10.21 0/0
오토핫키 gui (1) 1 민영123 2022.02.20 0/0
오토핫키 OpenCV 템플릿매칭 라이브러리 65 CatLab 2023.10.21 12/0
아이템획득, 특정이벤트 발생 시 카톡으로 알림 55 dlslwl 2023.10.18 4/0
수정추가) 이미지 좌표 스크립트 + 픽셀 15 MaximM 2023.06.25 0/0
비활성 키입력 함수(가상키값 리스트화) 53 hersia 2023.07.20 1/0
랜덤좌표 스크립트 입니다. 78 sama 2023.11.04 3/0
특정확장자 삭제하기 21 여의도김매력 2022.12.14 2/0
화면안에서 마우스좌표 따기입니다. 109 MaximM 2023.11.04 2/0
MsgBox, InputBox 등을 통해 사용자 입력 받기 39 ferento 2023.10.21 1/0
오토핫키(AutoHotKey, AHK 또는 오핫키)는 무엇인가? ... 메테오 2015.12.23 0/0
함수 Function 에 대한 이해 279 예지력1 2023.07.21 23/0
코드 최적화 Code Optimization 124 예지력1 2022.12.14 23/0
코드의 속도, 성능을 높이는 한줄 팁 모음 189 예지력1 2023.06.24 20/0
오토핫키 반응형 학습 어플리케이션 308 예지력1 2023.02.05 40/0
[문법] Try, Catch 함수를 Try하고 예외를 Catch 한다 106 예지력1 2023.02.05 9/0
Board Pagination Prev 1 2 3 Next
/ 3

전체 최신 인기글

전체 주간 인기글