MsgBox
지정된 텍스트를 작은 창에 보여줍니다. 그 안에 하나 이상의 버튼이 들어 있습니다 (예를 들어 Yes 그리고 No).
MsgBox, Text MsgBox [, Options, Title, Text, Timeout]
매개변수
- Text
모든 매개변수를 생략하면, MsgBox는 텍스트 "계속하려면 OK를 누르십시오."를 보여줍니다. 그렇지 않으면, 이 매개변수는 사용자에게 무엇을 해야 하는지 또는 정보를 제공하기 위해 메시지 박스 안에 보여주는 텍스트입니다.
피신 연속열을 사용하면 특수 문자를 표기할 수 있습니다. 예를 들어, `n은 라인피드 문자를 나타냅니다. 이 문자는 현재 줄을 끝내고 새 줄을 시작합니다. 그리하여,
text1`n`ntext2
는 text1과 text2 사이에 빈 줄을 만듭니다.Text가 길면, 계속 섹션을 수단으로 여러 짧은 줄들로 가를 수 있습니다. 이렇게 하면 가독성과 유지관리성이 개선됩니다.
- Options
메시지 박스의 종류와 가능한 버튼 조합을 나타냅니다. 비어 있거나 생략하면, 기본값은 0입니다. 허용되는 값들은 아래의 표를 참조하십시오.
이 매개변수는 기호 그대로의 숫자이거나 (v1.1.06+) 또는
% Options
와 같은 강제 표현식입니다. 비어 있지 않은 다른 값들은 이 매개변수로 인지하지 않고, 단일-매개변수의 Text의 일부로 인지합니다.- Title
메시지 박스 창의 제목. 생략하거나 비어 있으면, 기본값은 스크립트의 (경로 없이) 이름입니다.
- Timeout
(선택적) 초단위 시간 제한, 안에 십진 소수점이 들어 있지만 기본적으로 표현식이 아닙니다. v1.1.06+에서,
% mins*60
와 같은 강제 표현식일 수 있습니다.값이 2147483 (24.8 일)을 넘어서면, 2147483이 설정됩니다. 시간제한이 경과한 후에 메시지 박스는 자동으로 닫힙니다. 그리고 IfMsgBox 명령어가 그 값 TIMEOUT을 보게 됩니다.
알려진 한계: MsgBox에 오직 OK 버튼만 있을 경우, 또다른 쓰레드에 의해 자신의 쓰레드가 인터럽트 되어 있는 동안에 MsgBox 시간제한이 끝나면 IfMsgBox는 OK 버튼이 눌렸다고 생각합니다.
Options 매개변수는 다음 값을 조합(합)으로 구성됩니다.
기능 | 십진수 값 | 십육진수 값 |
---|---|---|
OK (즉, OK 버튼이 보여집니다) | 0 | 0x0 |
OK/Cancel | 1 | 0x1 |
Abort/Retry/Ignore | 2 | 0x2 |
Yes/No/Cancel | 3 | 0x3 |
Yes/No | 4 | 0x4 |
Retry/Cancel | 5 | 0x5 |
Cancel/Try Again/Continue | 6 | 0x6 |
도움말 버튼 추기 (아래 논평 참조) | 16384 | 0x4000 |
손 아이콘 (중지/에러) | 16 | 0x10 |
질문 아이콘 | 32 | 0x20 |
감탄 아이콘 | 48 | 0x30 |
별표 아이콘 (정보) | 64 | 0x40 |
2nd 버튼이 기본값 | 256 | 0x100 |
3rd 버튼이 기본값 | 512 | 0x200 |
System Modal (항상 위) | 4096 | 0x1000 |
Task Modal | 8192 | 0x2000 |
항상 위 (스타일 WS_EX_TOPMOST) (시스템 모델과 같지만 제목 바 아이콘이 생략됩니다) |
262144 | 0x40000 |
텍스트를 우측 정렬 | 524288 | 0x80000 |
Hebrew/Arabic에 대하여 오른쪽에서 왼쪽으로 읽음 | 1048576 | 0x100000 |
논평
위의 표에서 MsgBox에 보여줄 값들을 더해서 사용됩니다. 예를 들어, 기본 버튼을 Yes 대신에 No로 하여 Yes/No 박스를 지정하려면, Options 값은 256+4 (260)가 됩니다. 십육진수로 0x100+0x4 (0x104)가 됩니다.
MsgBox는 똑똑하게 쉼표를 처리합니다. 그래서 보통 Text 매개변수 안에 있는 쉼표를 피신 시킬 필요가 없습니다.
최근의 MsgBox에서 사용자가 어느 버튼을 눌렀는지 알아 내려면, IfMsgBox 명령어를 사용하십시오. 예를 들어:
MsgBox, 4,, 계속 하시겠습니까? (Yes 또는 No를 누르십시오) IfMsgBox Yes MsgBox Yes를 누르셨습니다. else MsgBox No를 누르셨습니다.
버튼의 이름들은 다음 예제를 따라 재단할 수 있습니다.
정보: MsgBox 창이 활성화되어 있는 동안 Control-C를 누르면 그의 텍스트를 클립보드로 복사합니다. 이것은 AutoHotkey가 생산한 MsgBox는 물론이고 모든 MsgBox에 적용됩니다.
GUI 창과 함께 MsgBox 사용하기: GUI 창은 Gui +OwnDialogs를 사용하면 모달 MsgBox를 보여줄 수 있습니다. 모달 MsgBox에서 사용자는 MsgBox를 끝낼 때까지 GUI 창과 상호 작용할 수 없습니다. 그런 경우, 위의 테이블에 있는 System Modal 또는 Task Modal 옵션을 지정할 필요가 없습니다.
Gui +OwnDialogs가 겨져 있지 않으면, Task Modal 옵션(8192)을 사용하면 사용자가 MsgBox를 끝낼 때까지 스크립트의 모든 창을 끌 수 있습니다.
도움말 버튼: 도움말 버튼 옵션 (83)이 Options에 존재하면, 도움말 버튼을 클릭해도 아무 효과도 없습니다. 단, 다음 두 조건이 모두 참인 경우는 예외입니다:
- Gui +OwnDialogs를 수단으로 MsgBox를 GUI 창이 소유합니다.
- 스크립트가 WM_HELP 메시지 (0x53)를 감시하고 있습니다. 예를 들어:
OnMessage(0x53, "WM_HELP")
. WM_HELP() 함수가 호출될 때, 사용자를 안내 할 수 있습니다. 예를 들어 또다른 창이나 MsgBox를 보여줍니다.
닫기 버튼 (MsgBox의 제목 바에 있는): MsgBox 창은 운영 체제의 내장 특징이기 때문에 , 그의 X 버튼은 어떤 버튼이 존재할 경우에만 활성 화됩니다. 오직 OK 버튼만 있다면, X 버튼을 클릭하더라도 OK를 클릭한 것과 같습니다. 그렇지 않으면, X 버튼은 비활성화 됩니다. 단, Cancel 버튼이 있다면 예외인데, 이 경우 X를 클릭한 것은 Cancel를 누른 것과 같습니다.
관련 항목
IfMsgBox, InputBox, FileSelectFile, FileSelectFolder, ToolTip, GUI
예제
MsgBox 이것은 매개변수가 한 개인 방법입니다. 쉼표 (,)는 피신시킬 필요가 없습니다. MsgBox, 4, , 이것은 매개변수가 세 개인 방법입니다. 쉼표 (,)는 피신 시킬 필요가 없습니다. MsgBox, 4, , 계속하시겠습니까? (YES 또는 NO를 누릅니다) IfMsgBox No return MsgBox, 4, , 매개변수가 네 개인 방법: 이 MsgBox는 시간제한이 5초입니다. 계속하시겠습니까?, 5 IfMsgBox Timeout MsgBox 5 초 안에 YES 또는 NO를 누르지 않았습니다. else IfMsgBox No return ; 매개변수 앞에 "% "를 배치하면, 표현식이 됩니다. 다음 예제에서, ; 계산이 수행되고, 의시-배열 원소에 접근합니다. 그리고 함수를 호출합니다. ; 이 모든 항목들은 "." 연산자로 결합되어 하나의 문자열을 형성해 MsgBox에 보여집니다: MsgBox % "New width for object #" . A_Index . " is: " . RestrictWidth(ObjectWidth%A_Index% * ScalingFactor) ; 다음 예제는 MsgBox가 초점을 훔치고 있다고 사용자에게 경고합니다 (이 경우 사용자가 타자하고 있음). SplashTextOn,,, MsgBox가 곧 사라집니다. Sleep 3000 SplashTextOff MsgBox 백업이 완료되었습니다.