오토핫키 커뮤니티

개요


오토핫키(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 등의 특수 문자가 그대로 출력된다.

 ,

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




전체 최신 인기글

전체 주간 인기글