프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

7. 문자를 출력하는 MsgBox (하)


지난 강에서는 MsgBox의 첫 번째 매개변수인 Text 매개변수만을 사용해보았는데, 이번엔 Title과 Options 매개변수를 사용해볼 것입니다. 먼저 원형을 다시 한 번 살펴보겠습니다.

MsgBox([Text, Title, Options])
MsgBox 함수의 원형

매개변수

  • Text: 알림 상자에 표시될 내용
  • Title: 알림 상자의 제목
  • Options: 알림 상자가 어떻게 표시되는지 설정할 수 있는 옵션

1. Text, Title

지난 강에서 Text 매개변수를 전달하여 알림 상자의 내용을 변경해보았습니다. Title 메개변수는 Text 매개변수와 같은 방법으로 사용하며 알림 상자의 제목을 바꿔줍니다.

2. Options

알림 상자가 표시되는 방법을 설정할 수 있는 옵션을 적어줍니다.

공식적으로 이곳에 쓸 수 있는 인수는 기능별로 다섯 묶음으로 분류하고 있지만, 강좌에서는 세 묶음으로 간추려서 말씀드리겠습니다. 각 분류에서 원하는 옵션의 문자열을 찾아 써주시면 됩니다.

알림 상자의 버튼

버튼의 종류문자열
확인 (기본값)0OK 또는 O
확인취소1OKCancel 또는 O/C 또는 OC
중단다시 시도무시2AbortRetryIgnore 또는 A/R/I 또는 ARI
아니요취소3YesNoCancel 또는 Y/N/C 또는 YNC
아니요4YesNo 또는 Y/N 또는 YN
다시 시도취소5RetryCancel 또는 R/C 또는 RC
취소다시 시도계속6CancelTryAgainContinue 또는 C/T/C 또는 CTC

알림 상자의 아이콘

아이콘의 종류문자열
금지(✕)16Iconx
물음표(?)32Icon?
주의(⚠)48Icon!
정보(i)64Iconi

알림 상자가 화면에 표시되는 방법

기능의 종류문자열
최상위화 (제목 표시줄에 아이콘 표시)4096없음
최상위화262144없음
오른쪽 정렬1048576없음

실습

1. 알림 상자의 제목 설정하기

알림 상자의 제목을 바꿔보겠습니다. 다시 원형을 살펴볼까요? MsgBox 함수의 원형은 아래와 같습니다.

MsgBox([Text, Title, Options])
MsgBox 함수의 원형

지난 강에서 Text 매개변수에 인수로 문자열을 넣으면 알림상자의 문구가 변경된다는 것을 알게 되었죠. 이번엔 Title 매개변수를 사용하여 제목을 변경해보겠습니다.

1MsgBox("Hello, world!", "Test Title")
예제 1. Title 매개변수의 사용 Test Title이라는 제목이 있는 알림상자 사진 1. 실행 결과

좋습니다. 타이틀이 잘 바뀌었군요. 지난 강에서 배웠듯이 인수가 문자열이므로 코드 작성 시 따옴표로 감싸준 것도 확인할 수 있습니다.

2. 알림 상자의 옵션 지정하기 - 버튼

지정하고자 하는 옵션의 '수'나 '문자열'을 적어주면 된다고 하였으므로, 예를 들어 아니요 버튼이 있는 알림상자를 만들고자 한다면 아래처럼 세 가지 방법으로 코딩할 수 있을 것입니다.

1MsgBox("옵션 테스트", "Test Title", 4)
2MsgBox("옵션 테스트", "Test Title", "Y/N")
3MsgBox("옵션 테스트", "Test Title", "YN")
예제 2. 셋 모두 알림상자에 예/아니오 버튼 옵션을 부여하는 코드입니다 제목은 Test Title이며, 내용은 옵션 테스트이면서 예 버튼과 아니오 버튼이 있는 알림 상자 사진 2. 실행 결과

이해가 되셨나요? 말이 어렵지 직접 프로그래밍 해본다면 쉽습니다. 7개의 옵션 모두 사용해보고 알림상자의 변화를 관찰해보세요.

그런데 일반적인 프로그램에선 사용자가 어떤 버튼을 누르느냐에 따라 프로그램의 동작이 결정되곤 합니다. 사용자가 취소 버튼을 누르면 작업을 취소해야하고, 다시 시도 버튼을 누르면 다시 시도해야합니다. 이런식으로 사용자의 입력에 따라 다른 동작을 하게 하려면 곧 배울 연산자와 나중에 배울 조건문을 알아야합니다. 우리는 아직 배우지 않았기 때문에, 일단 허울좋게 모양을 만드는 법만 알고 넘어갑시다.

Tip: 수(number)는 문자열이 아닙니다

는 기본적으로 문자열에 포함되지 않습니다. 따라서 '예제 2'의 1번 줄에서 세번째 인수는 문자열이 아니기 때문에 "4"라고 쓰지 않았습니다.

'수''숫자로 이루어져있는 문자열'은 구분을 해야 하는데, "4"4는 각각 문자열 4수 4로 의미가 다릅니다. 다행히도 오토핫키는 수를 넣어야하는 대부분 상황에서 이를 문자열 취급하여 따옴표 처리를 해도 무방하게 동작하긴 합니다. 따라서 위의 상황에서 세번째 인수를 "4"라고 써도 동작하긴 하지만, 원칙적으론 4라고 쓰는 것이 맞습니다.

3. 알림 상자의 옵션 지정하기 - 아이콘

이번엔 알림 상자에 아이콘을 추가해봅시다. 알림 상자에는 문구를 쉽게 인지하게 해주는 아이콘을 추가해줄 수 있습니다. 아래 사진처럼 말이지요.

빨간 원 안에 가위표 표시가 있는 '금지' 알림 상자 파란 원 안에 물음표 표시가 있는 '물음표' 알림 상자 노란 삼각형 안에 느낌표 표시가 있는 '주의' 알림 상자 파란 원 안에 흰색 i자 표시가 있는 '정보' 알림 상자
사진 3~6. 알림상자의 아이콘

아이콘은 각각 금지(✕) 물음표(?), 주의(⚠), 정보(i)를 의미합니다.

이 역시 버튼 옵션과 마찬가지로, 상단의 표에서 원하는 옵션의 수나 문자열을 적어주시면 됩니다. 예를 들어서 주의 아이콘을 넣고 싶다면 아래와 같이 쓰면 되겠죠.

1MsgBox("옵션 테스트", "Test Title", 48)
2MsgBox("옵션 테스트", "Test Title", "Icon!")
예제 3. 주의 아이콘 적용 (두 줄 모두 같은 동작)

4. 여러 옵션의 결합

기능이 충돌하지 않는 이상, 여러 옵션을 동시에 쓸 수 있습니다. 예를 들어서 확인취소 버튼을 가지면서 주의(⚠) 아이콘을 가진 알림상자가 필요할 수 있습니다.

그럴땐 공백으로 구분하여 문자열 형식으로 옵션을 나열해주면 됩니다. 예를 들면 아래처럼 말이지요.

1MsgBox("알림 문구", "제목", "1 48")
1MsgBox("알림 문구", "제목", "OC Icon!")
예제 4. 여러 옵션의 동시 적용 (두 줄 모두 같은 동작) 주의 아이콘이 있으며 확인과 취소 버튼이 있는 알림 상자의 모습 사진 7. 실행 결과

혹은 옵션의 수를 더해주는 방식(위 예제에선 1 + 48 = 49를 사용)으로도 사용 가능한데, 이 경우 어떤 옵션을 사용했는지 한 눈에 알아보기 힘든 단점이 있어서 언급만 하고 넘어가겠습니다.

Tip: 선택 매개변수의 인수 생략

선택 매개변수는 생략이 가능하다고 했습니다. 그 부분엔 인수를 적지 않아도 된단 뜻이었죠. 만약 알림상자의 제목은 기본값으로 하고, 옵션만 주고 싶다면 아래 예시처럼 Title 매개변수에 인수를 전달하지 않아야합니다.

1MsgBox("알림 문구",, "Y/N")
Title 매개변수의 생략

위 코드 조각을 보시면, 인수를 적는 자리가 완전히 비어서 마치 쉼표를 두 번 쓴 것 같은 모습이 되었습니다. 이렇듯 인수를 생략하더라도 쉼표는 생략하면 안된다는 점도 꼭 유의해주세요. 단, 생략할 인수의 뒤에 더이상 적어줄 인수가 없다면 쉼표는 적지 않아도 됩니다.

1MsgBox("알림 문구", "Title")
예제 10. Options 매개변수의 생략

위 코드 조각은 Options 매개변수로 전달할 인수가 생략된 모습인데, Options 매개변수로 전달할 인수 뒤에 더이상 적을 인수가 없으므로, Title 인수 뒤에 쉼표를 적지 않아도 정상 작동합니다.

드디어! MsgBox 강좌가 마무리 되었습니다. 이제 여러분은 자유자재로 알림상자를 생성할 수 있습니다. 사실 이제 막 오토핫키를 접한 여러분껜 다소 힘이 드는 부분이었을지도 모르겠습니다. 분량도 많고요. 처음 배우는 함수이기 때문에 일부러 자세하게 설명하느라 다소 늘어지는 감이 있기도 했습니다.

사실 더욱 기초적인 부분인 변수와 연산자 개념을 먼저 알려드리는 것이 맞습니다.
그렇지만 MsgBox를 모른다면 변수와 연산자를 '설명'할 수만 있지, 그것을 '눈으로 볼'수 없습니다. 가뜩이나 지루하고 어려운 변수 / 연산자 개념을 이론과 설명으로만 배우고있다면 금방 지치고 포기하게 됩니다.

따라서 개인적인 판단에 따라 MsgBox를 먼저 강좌합니다. 이해해주세요.

질문하러 가기