안녕하세요, 자동화 마니아 여러분! 오늘은 오토핫키(AutoHotkey, AHK) 스크립팅의 핵심을 파헤쳐보겠습니다. AHK는 단순한 반복 작업 자동화부터 복잡한 시스템 제어까지, 일상과 업무를 혁신적으로 바꿔주는 강력한 도구입니다. 하지만 이 모든 마법의 중심에는 변수가 자리 잡고 있죠. 변수를 제대로 다루지 못하면 스크립트가 딱딱하고 비효율적으로 느껴질 테니까요. 이 가이드에서는 변수의 기본부터 고급 활용까지 완벽히 정복하는 방법을 단계별로 설명하겠습니다. 초보자부터 중급자까지, AHK를 더 깊이 파고들고 싶다면 이 글이 딱 맞아요!
변수란 무엇이며 왜 중요한가?
변수는 스크립트 내에서 데이터를 저장하고 조작할 수 있는 이름이 붙은 저장 공간입니다. 비유하자면, 정보를 담는 '컨테이너'나 특정 값을 가리키는 '라벨'이라고 할 수 있어요. 프로그래밍에서 변수가 왜 필수적인지, 그 이유를 세 가지로 정리해 보죠.
1. 정의: 값을 저장하는 상징적인 이름
변수는 단순한 메모리 공간이 아니라, 특정 값과 연결된 상징적인 이름입니다. 이 이름을 통해 스크립트의 어디서든 데이터를 쉽게 불러오거나 수정할 수 있어요. 예를 들어, name 변수에 "김철수"라는 값을 저장하면, 스크립트 전체에서 name을 호출할 때마다 "김철수"에 접근할 수 있습니다. 이는 코드를 읽기 쉽고 유지보수하기 좋게 만들어줍니다.
2. 목적: 동적인 데이터 처리의 기반
변수가 없다면 모든 값이 하드코딩(hardcoding) 되어야 해요. 즉, "볼륨 50"처럼 숫자를 직접 입력해야 하는데, 이는 유연성이 떨어집니다. 사용자 입력, 시스템 시간, 파일 내용 등 변화무쌍한 데이터에 대응하려면 변수가 필수죠. 변수 덕분에 스크립트가 조건에 따라 동적으로 반응하고, 더 상호작용적이고 실용적인 자동화를 구현할 수 있습니다. 예를 들어, 현재 시간에 따라 다른 인사말을 출력하는 스크립트도 변수 하나로 가능해요!
3. 추가 이점: 코드 재사용성과 디버깅 용이성
변수는 코드를 모듈화하고 재사용하기 쉽게 하며, 디버깅 시 문제점을 빠르게 추적할 수 있게 해줍니다. AHK처럼 가벼운 언어에서 변수는 스크립트의 '뼈대' 역할을 하죠.
오토핫키에서 변수 선언하기
AHK에서 변수를 선언하는 건 초간단합니다. 할당 연산자를 사용해 변수 이름에 값을 넣기만 하면 돼요. AHK v1과 v2의 차이를 고려해 보죠 (이 가이드는 v2 기준으로 설명하겠습니다).
:=(표현식 할당): 권장 방식. 복잡한 표현식 결과를 변수에 저장합니다.=(간단 할당): 숫자나 기본 문자열에만 사용하세요. 표현식에서 오해의 소지가 있어요.
name := "John Doe" ; 표현식 할당: 문자열 "John Doe"를 name에 저장
age = 30 ; 간단 할당: 숫자 30을 age에 저장
이 예시에서 name은 문자열을, age는 숫자를 담고 있어요. 선언 후 바로 사용 가능하니, AHK의 직관성을 느껴보세요!
변수에 저장되는 다양한 데이터 유형
AHK 변수는 유연해서 여러 유형의 데이터를 담을 수 있습니다. 각 유형은 특정 용도에 최적화되어 있어요. 아래에서 주요 유형을 살펴보죠.
1. 문자열 (String)
텍스트 기반 데이터(메시지, 경로, 이름 등)를 저장합니다. . 연산자로 문자열을 연결할 수 있어요.
greeting := "Hello, " . name ; "Hello, John Doe" 생성
2. 숫자 (Number)
정수나 부동 소수점 숫자를 저장하며, 계산에 필수적입니다. AHK는 자동으로 유형을 처리해줘요.
totalPrice := 19.99 * age ; 19.99 * 30 = 599.7 계산
3. 부울 (Boolean)
true 또는 false만 저장. 조건문(if)에서 조건을 표현할 때 유용합니다.
isActive := true ; 상태 플래그로 사용
if (isActive) {
MsgBox "활성 상태입니다!"
}
4. 배열 및 객체 (Array & Object) - 고급 활용
복잡한 데이터를 다룰 때 빛을 발합니다.
- 배열(Array): 순서 있는 목록.
- 객체(Object): 키-값 쌍으로 구조화된 데이터.
myArray := ["사과", "바나나", "체리"] ; 배열: myArray[1] = "사과"
myObject := {Name: "Alice", Age: 25} ; 객체: myObject.Name = "Alice"
이 유형들은 루프나 JSON 처리 같은 고급 작업에 필수예요.
변수 스코프: 접근 범위 이해하기
변수의 스코프(scope) 는 어디서 접근할 수 있는지를 정의합니다. 잘못된 스코프 관리는 버그의 원인이 되니 주의하세요!
1. 전역 변수 (Global Variable)
스크립트 전체에서 접근 가능. 공유 데이터(설정값 등)에 적합합니다.
globalVar := "나는 전역 변수야"
myFunction() {
MsgBox globalVar ; 함수 안에서도 OK
}
2. 지역 변수 (Local Variable)
함수 내에서만 유효. local 키워드로 선언하며, 메모리 효율이 좋습니다.
myFunction() {
local localVar := "나는 지역 변수야"
MsgBox localVar ; 함수 밖에서는 접근 불가
}
전역은 과도하게 사용하지 말고, 지역으로 한정하세요. AHK v2에서는 기본적으로 지역 스코프를 권장합니다.
변수 값 수정하기: 동적 스크립트의 힘
변수는 선언 후 언제든 수정할 수 있어요. 이는 AHK 스크립트를 사용자 입력이나 실시간 변화에 적응하게 만듭니다.
count := 0 ; 초기화
count += 1 ; count = count + 1 (1 증가)
MsgBox count ; "1" 출력
게임 점수 업데이트, 루프 카운터, 상태 변경 등에 활용하세요. +=, -=, *=, /= 같은 단축 연산자가 편리합니다.
실용적인 변수 사용 사례 예시
이론만으로는 부족하죠? 실제 AHK 스크립트에서 변수를 어떻게 쓰는지 두 예시로 확인해 보세요.
예시 1: 간단한 계산기 스크립트
사용자 입력으로 두 숫자를 더하는 기본 계산기. 변수가 입력과 출력을 연결합니다.
num1 := InputBox("첫 번째 숫자를 입력하세요:")
num2 := InputBox("두 번째 숫자를 입력하세요:")
sum := num1 + num2 ; 합계 계산
MsgBox "합계는: " . sum ; 결과 표시
이 스크립트는 변수 덕분에 사용자 맞춤형으로 동작하며, 더 복잡한 연산(곱셈, 나눗셈)으로 확장하기 쉽습니다.
예시 2: 사용자 환경설정 관리
볼륨 레벨이나 창 크기 같은 설정을 변수로 관리하면, 한 곳만 수정해도 전체 스크립트가 업데이트됩니다. (코드베이스의 여러 줄을 변경할 필요 없이!)
; 기본 설정 변수
volumeLevel := 50 ; 기본 볼륨 (0-100)
windowWidth := A_ScreenWidth / 2 ; 화면 너비의 절반 (A_ScreenWidth: 내장 변수)
windowHeight := A_ScreenHeight * 0.8 ; 화면 높이의 80%
; 설정 적용 예시 (가상의 볼륨 조절 및 창 리사이즈)
SoundSet, %volumeLevel% ; 시스템 볼륨 설정
WinMove, A,, (A_ScreenWidth - windowWidth) / 2, (A_ScreenHeight - windowHeight) / 2, %windowWidth%, %windowHeight% ; 활성 창 중앙 배치
; 사용자 입력으로 설정 변경
newVolume := InputBox("새 볼륨 레벨을 입력하세요 (0-100):")
if (newVolume >= 0 && newVolume <= 100) {
volumeLevel := newVolume
SoundSet, %volumeLevel%
MsgBox "볼륨이 " . volumeLevel . "으로 변경되었습니다!"
}
이 예시는 변수가 설정 중앙화의 힘을 보여줍니다. 파일에서 설정을 불러오거나 GUI로 수정하면 더 강력해져요.
'ETC > Auto Hotkey' 카테고리의 다른 글
| 오토핫키 스크립팅, 연산자로 마스터하기: 자동화의 핵심! (0) | 2025.10.26 |
|---|---|
| 오토핫키(AHK) 스크립트 작성의 핵심: 데이터 유형 완벽 이해하기 (0) | 2025.10.26 |
| 오토핫키, DLL 호출로 날개를 달다! 스크립트 확장과 자동화의 새로운 지평 (0) | 2025.10.26 |
| AutoHotkey와 COM 객체: Windows 자동화의 무한한 가능성을 열다! (0) | 2025.10.26 |
| 오토핫키 스크립트, 이제 오류 걱정 끝! 디버깅과 오류 처리 완벽 가이드 (0) | 2025.10.26 |