⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만,
새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.
12. 내장 변수
마지막 수정일: 2024-10-24
앞서, 변수란 프로그래밍에서 사용되는 어떠한 값에 이름을 붙여둔 것이라고 했습니다. 값을 코드에 직접 적는 대신에, 값이 담긴 변수를 프로그래밍에 직접 사용할 수 있다는 뜻이었죠.
우리가 직접 변수에 값을 담을 수 있지만(=직접 값에 이름을 붙여줄 수 있지만), 오토핫키에서는 미리 내장되어있는 변수가 존재합니다. 내장 변수는 오토핫키에서 미리 만들어둔 변수로서, 주로 시스템과 관련된 여러 값이 존재합니다.
따라서 이런 변수는 만들지 않고 바로 쓰기만 하면 되죠. 이번 강에서는 내장 변수를 알아보고, 사용해보겠습니다.
변수의 사용
우선 변수를 사용해보겠습니다.
1 MsgBox(variable)
변수는 말 그대로 '수'이기 때문에, 문자열을 사용할 때처럼 따옴표 처리를 할 필요가 없습니다.
만약 variable
이라는 변수에 Hello, world!
라는 문자열 값이 담겨있다면,
알림상자는 Hello, world!를 출력할 것입니다.
물론, 지금은 variable
변수에 아무 값도 담겨있지 않아서 빈 값만 출력됩니다.
어렵지 않죠?
내장 변수
위의 variable
변수와 다르게, 오토핫키에서 자주 쓰이거나 컴퓨터 시스템과 관련된 변수는 따로 값을 담지 않아도 쓸 수 있습니다.
이를 '오토핫키 자체에 내장되어있는 변수'라는 뜻에서 내장 변수라고 부릅니다.
모든 내장 변수를 정리하기엔 너무 많을 뿐더러 그다지 쓸 일이 없는 내장 변수도 많습니다. 모든 내장 변수 목록은 오토핫키 v2 문서(https://www.autohotkey.com/docs/v2/)에서 찾아볼 수 있습니다.
강좌에서는 주요한 내장 변수만 정리해드립니다. 스크립트 파일 / 날짜와 시간 / 운영체제 / 기타와 같이 네 분류로 나누어서 표로 정리해보았습니다. 다시 말씀드리지만, 모든 내장 변수를 적은 것이 아닙니다!
스크립트 파일과 관련된 내장 변수
내장 변수 | 설명 |
---|---|
A_WorkingDir | 현재 스크립트가 실행되고 있는 경로 |
A_ScriptDir | 현재 스크립트가 존재하는 경로 (일반적으로 A_WorkingDir과 같음) |
A_ScriptName | 현재 스크립트 파일의 이름 |
A_ScriptFullPath | 현재 스크립트의 파일 이름을 포함한 전체 경로 |
A_AhkVersion | 현재 실행중인 오토핫키의 버전 |
A_IsCompiled | 현재 실행중인 스크립트가 컴파일되었다면 1 , 아니라면 0 의 값을 가짐 |
날짜와 시간과 관련된 내장 변수
내장 변수 | 설명 (예시) |
---|---|
A_YYYY 또는 A_Year | 현재 연도 (2022) |
A_MM 또는 A_Mon | 현재 월 (07) |
A_DD 또는 A_MDay | 현재 일 (31) |
A_MMMM | 현재 월의 전체 명칭 (7월) |
A_MMM | 현재 월의 간략한 명칭 (7) |
A_DDDD | 현재 요일의 전체 명칭 (월요일) |
A_DDD | 현재 요일의 간략한 명칭 (월) |
A_WDay | 현재 주의 일숫자. 일요일은 (1), 월요일은 (2), ... 토요일은 (7) |
A_YDay | 현재 연도의 일숫자. 1월 1일은 (1), 평년 12월 31일은 (365) |
A_Hour | 현재 시 (23) |
A_Min | 현재 분 (59) |
A_Sec | 현재 초 (59) |
A_Now | 현재 날짜 및 시간 - 연월일시분초 (20220727215502) |
A_TickCount | 컴퓨터가 가동된 후 흐른 시간 - 밀리초 (7833703) = 약 2시간 18분 |
운영체제와 관련된 내장 변수
내장 변수 | 설명 |
---|---|
A_Temp | Temp 폴더의 경로 |
A_OSVersion | 현재 운영체제의 버전 |
A_ComputerName | 운영체제에 설정된 현재 컴퓨터의 이름 |
A_UserName | 운영체제에 설정된 현재 사용자의 이름 |
A_ProgramFiles | Program Files 폴더의 경로 |
A_AppData | AppData\Roaming 폴더의 경로 |
A_Desktop | 바탕화면의 경로 |
A_StartMenu | 시작 메뉴 폴더의 경로 |
A_Startup | 시작 프로그램 폴더의 경로 |
A_MyDocuments | 문서 폴더의 경로 |
A_IsAdmin | 현재 스크립트가 관리자 권한으로 실행되어있으면 1 , 아니라면 0 의 값을 가짐 |
A_ScreenWidth | 주 모니터의 너비 (px) |
A_ScreenHeight | 주 모니터의 높이 (px) |
기타 내장 변수
내장 변수 | 설명 |
---|---|
A_Clipboard | 클립보드가 가진 텍스트 값 (=현재 복사되어있는 텍스트) |
A_Space | 반각 공백 (=띄어쓰기) |
A_Tab | 수평 탭 (=이스케이프된 문자열 `t 와 동일) |
true | 숫자 1 과 동일 |
false | 숫자 0 과 동일 |
아주 많은 내장 변수가 생략되어있지만, 그러한 내장 변수 중 쓸모있는 것은 관련된 내용을 배울 때 함께 설명드리겠습니다. 배우지 않은 함수와 관련된 내장 변수 같은 경우 아직은 설명할 수 없거든요.
⚠ 날짜와 시간과 관련된 내장 변수는 운영체제 설정을 따릅니다
따라서 사용자가 운영체제의 날짜 및 시간 설정을 변경한다면, 이런 내장 변수는 그에 맞는 변경된 값을 가집니다.
또한, A_MMMM
A_MMM
A_DDDD
A_DDD
는 사용자의 언어 설정에 따라 다른 값을 가집니다.
예를 들어서 A_MMMM
은 국문 설정에서 7월이라는 값을 가지지만, 영문 설정에선 July라는 값을 가집니다.
실습
1. 내장 변수 사용
간단한 예제를 들어보겠습니다.
이번엔 현재 날짜와 시간을 담고 있는 변수인 A_Now
를 써보겠습니다.
1 MsgBox(A_Now)
저는 20220727215502
라고 출력되네요. 이는 2022년 07월 27일 21시 55분 02초를 나타냅니다.
이렇게 현재의 날짜와 시간을 출력할 수 있습니다.
A_Now
처럼 모든 연/월/일/시/분/초를 한번에 쓰지 않고, 연/월/일/시/분/초가 따로 필요한 경우도 있습니다.
그럴땐 A_YYYY
A_MM
A_DD
A_Hour
A_Min
A_Sec
과 같이 각각을 의미하는 내장 변수도 존재하니 이를 사용하시면 됩니다. 이러한 자주 쓰는 내장 변수는 하단에 정리해드리겠습니다.
2. 변수와 변수, 변수와 문자열의 연결
여러 변수나 문자열을 합쳐서 하나의 인수로 적는 방법은 무엇일까요? 예를 들어서, 알림상자에 내장 변수와 문자열을 동시에 표시하게끔 말이에요. 즉, 아래처럼 출력하고 싶은 상황인거죠.
지금 시각은 (현재 시)시 (현재 분)분입니다.
방법은 간단합니다. 지금까지 배운대로 변수는 놔두고 문자열만 따옴표로 감싸주어 적어주면 됩니다. 단, 각각을 이을 때는 한 칸의 공백을 사이에 두어야합니다.
1 MsgBox("지금 시각은 " A_Hour "시 " A_Min "분입니다.")
'예제 2'에서 따옴표로 감싸진 문자열 부분과, 감싸지지 않은 변수 부분이 한 칸씩 띄어져있는 것을 볼 수 있습니다. 변수와 문자열은 항상 공백으로 구분해줘야 한다는 것을 잊지 마세요!
[점검 문제] 위의 '예제 2'에서 인수는 몇 개를 전달해줬나요?
정답 펼치기/접기
1개입니다. 매개변수와 매개변수는 쉼표로 구분해 주었죠? '예제 2'에선 MsgBox의 Text 매개변수만 사용했으므로, 인수도 한 개만 전달해준 것입니다.
그 인수는 현재 시각에 따라"지금 시각은 12시 40분입니다."
와 같이 전달됩니다. 시간에 따라 전달되는 인수가 달라지는 것이죠!