ETC/Auto Hotkey

AutoHotkey 기본 문법: 스크립트 작성부터 제어문까지

shimdh 2025. 2. 4. 14:32
728x90

1. 스크립트 작성법

AutoHotkey 스크립트는 .ahk 확장자를 가진 텍스트 파일로 저장됩니다. 스크립트는 주석, 명령어, 변수 등으로 구성되며, 이를 통해 다양한 작업을 자동화할 수 있습니다.

1.1 주석

주석은 코드의 설명을 추가할 때 사용되며, ; 기호로 시작합니다. 주석은 코드 실행에 영향을 미치지 않습니다.

; 이 줄은 주석입니다.
MsgBox, Hello, World! ; 이 부분도 주석입니다.

1.2 명령어

명령어는 특정 작업을 수행하는 지시문입니다. 예를 들어, MsgBox는 메시지 박스를 표시하는 명령어입니다.

MsgBox, 안녕하세요!

1.3 변수

변수는 데이터를 저장하는 데 사용됩니다. 변수를 선언하고 사용하는 방법은 다음과 같습니다.

name := "홍길동" ; 변수 name에 문자열 할당
MsgBox, 안녕하세요, %name%! ; 변수 참조

2. 변수 사용법

변수는 데이터를 저장하고 조작하는 데 필수적입니다. AutoHotkey에서는 변수를 별도로 선언하지 않고 바로 사용할 수 있습니다.

2.1 변수 선언 및 초기화

myVariable := 10 ; 변수에 값 할당
MsgBox, %myVariable% ; 변수 값 출력

2.2 변수 활용 예제

age := 20
if (age >= 18) {
    MsgBox, 성인입니다.
} else {
    MsgBox, 미성년자입니다.
}

2.3 변수의 유형

AutoHotkey에서는 변수에 다양한 유형의 데이터를 저장할 수 있습니다. 예를 들어, 문자열, 숫자, 배열 등이 있습니다.

str := "Hello, World!" ; 문자열
num := 123 ; 숫자
arr := [1, 2, 3] ; 배열

2.4 변수의 범위

변수의 범위는 변수가 접근 가능한 영역을 의미합니다. 전역 변수와 지역 변수로 나뉩니다.

globalVar := "전역 변수" ; 전역 변수

MyFunction() {
    localVar := "지역 변수" ; 지역 변수
    MsgBox, %globalVar% - %localVar%
}

MyFunction()
MsgBox, %globalVar% ; 지역 변수는 접근 불가

3. 연산자

연산자는 변수와 값 간의 계산 및 비교를 수행하는 데 사용됩니다. AutoHotkey에서는 다양한 연산자를 제공합니다.

3.1 산술 연산자

a := 10
b := 5
c := a + b ; 더하기
d := a - b ; 빼기
e := a * b ; 곱하기
f := a / b ; 나누기
g := a % b ; 나머지

3.2 비교 연산자

x := 20
y := 30

if (x < y) {
    MsgBox, x는 y보다 작습니다.
} else {
    MsgBox, x는 y보다 크거나 같습니다.
}

3.3 논리 연산자

isRaining := false
hasUmbrella := true

if (!isRaining && hasUmbrella) {
    MsgBox, 우산이 필요 없습니다.
} else if (isRaining || !hasUmbrella) {
    MsgBox, 우산이 필요할 수도 있습니다.
}

3.4 대입 및 증감 연산자

count := 0   ; 변수 초기화
count++      ; count에 1을 더함
count += 5   ; count에 5를 더함
MsgBox, %count% ; 결과 출력

4. 제어문

제어문은 프로그램의 흐름을 제어하는 데 사용됩니다. 조건문과 반복문이 대표적입니다.

4.1 조건문 (If, Else If, Else)

z := 7
if (z < 5) {
    MsgBox, z는 5보다 작습니다.
} else if (z = 5) {
    MsgBox, z는 정확히 5입니다.
} else {
    MsgBox, z는 5보다 큽니다.
}

4.2 반복문 (Loop, While, For)

; Loop 예제
Loop, 5 {
    MsgBox, %A_Index%번째 반복 중입니다.
}

; While 예제
count := 0
while (count < 5) {
    count++
    MsgBox, 현재 카운트: %count%
}

; For 예제
for i in [1, 2, 3] {
    MsgBox, %i%
}

4.3 중첩 제어문

조건문과 반복문을 중첩하여 사용할 수도 있습니다.

Loop, 3 {
    if (A_Index = 1) {
        MsgBox, 첫 번째 반복입니다.
    } else if (A_Index = 2) {
        MsgBox, 두 번째 반복입니다.
    } else {
        MsgBox, 세 번째 반복입니다.
    }
}

5. 함수 정의 및 호출

함수는 특정 작업을 수행하는 코드 블록으로, 재사용성을 높여줍니다.

5.1 함수 정의

Add(a, b) {
    return a + b ; 두 숫자의 합 반환
}

5.2 함수 호출

result := Add(5, 10)
MsgBox, 결과는 %result% 입니다.

5.3 재귀 함수

함수는 자기 자신을 호출할 수도 있습니다. 이를 재귀 함수라고 합니다.

Factorial(n) {
    if (n = 1) {
        return 1
    } else {
        return n * Factorial(n - 1)
    }
}

MsgBox, % Factorial(5) ; 5의 팩토리얼 계산

6. 배열과 객체

AutoHotkey에서는 배열과 객체를 사용하여 복잡한 데이터 구조를 관리할 수 있습니다.

6.1 배열

arr := [1, 2, 3, 4, 5]
Loop, % arr.Length() {
    MsgBox, % arr[A_Index]
}

6.2 객체

obj := {name: "홍길동", age: 20}
MsgBox, 이름: % obj.name, 나이: % obj.age

7. 파일 입출력

AutoHotkey에서는 파일을 읽고 쓰는 작업도 간단하게 수행할 수 있습니다.

7.1 파일 읽기

FileRead, content, C:\example.txt
MsgBox, %content%

7.2 파일 쓰기

FileAppend, Hello, World!, C:\example.txt

8. 핫키와 핫스트링

AutoHotkey의 핫키와 핫스트링은 키보드 입력을 자동화하는 데 유용합니다.

8.1 핫키

^j:: ; Ctrl+J를 눌렀을 때
MsgBox, Ctrl+J를 눌렀습니다.
return

8.2 핫스트링

::btw::by the way ; btw를 입력하면 by the way로 자동 변환

9. 고급 기능

9.1 GUI 생성

AutoHotkey를 사용하여 간단한 GUI를 생성할 수 있습니다.

Gui, Add, Text,, 이름을 입력하세요:
Gui, Add, Edit, vName
Gui, Add, Button, gSubmit, 제출
Gui, Show
return

Submit:
Gui, Submit
MsgBox, 입력된 이름: %Name%
return

9.2 네트워크 요청

AutoHotkey에서는 URL을 통해 네트워크 요청을 보낼 수 있습니다.

UrlDownloadToFile, https://example.com, C:\example.html
Run, C:\example.html

10. 디버깅과 오류 처리

10.1 디버깅

디버깅은 코드의 오류를 찾고 수정하는 과정입니다. MsgBox를 사용하여 변수 값을 확인할 수 있습니다.

x := 10
y := 20
MsgBox, x: %x%, y: %y%

10.2 오류 처리

TryCatch를 사용하여 오류를 처리할 수 있습니다.

Try {
    FileRead, content, C:\nonexistent.txt
} Catch {
    MsgBox, 파일을 읽는 중 오류가 발생했습니다.
}

결론

AutoHotkey의 기본 문법을 이해하면 간단한 스크립트부터 복잡한 자동화 작업까지 다양한 기능을 구현할 수 있습니다. 이번 포스트에서는 스크립트 작성법, 변수 사용법, 연산자, 제어문, 함수 정의 및 호출, 배열과 객체, 파일 입출력, 핫키와 핫스트링, 고급 기능, 디버깅과 오류 처리에 대해 자세히 알아보았습니다. 예제를 통해 직접 코드를 작성해보면서 익히는 것이 가장 효과적입니다. AutoHotkey를 활용하여 반복적인 작업을 자동화하고, 생산성을 높여보세요!

728x90