IT 관련 팁/오토핫키 Autohotkey

오토핫키 - 포즈 Pause | 흐름 제어하기 | 스크립트 중단 재개

RayShines 2022. 10. 20. 11:46
반응형

오토핫키 스크립트의 흐름을 제어하는 방법 중 하나인 Pause에 대해서 알아보겠습니다.

 

오토핫키 스크립트는 자동화에는 매우 유용한 프로그램이지만 상황을 판단하는 능력은 높지 않습니다. A라는 지점에서 다음 단계로 넘어가야만 하는데 반드시 사람이 직접 확인을 해야 할 필요성이 있을 때가 있습니다. 그럴 때 스크립트의 진행이 잠깐 멈추도록 해볼 수 있습니다. 

 

1. 오토핫키에는 pause라는 기능이 있습니다.

스크립트 중간에 pause 명령어를 넣어둡니다. 진행되던 스크립트가 pause를 만나면 그 지점에서 멈춥니다.

 

Pause

 

Pause를 하는 스크립트는 아주 간단합니다. 위의 코드처럼 그냥 "Pause"라고 넣기만 하면 됩니다.

 

그런데 그냥 멈추게 하면 이게 제대로 멈춘 것인지 알기가 어려울 수도 있으니 메시지 박스를 하나 띄우도록 하는 것도 좋습니다. 저는 주로 이렇게 합니다.

 

Msgbox, 0, ,1st Pause, 0.5
Pause

 

위의 코드는 "1st Pause"이라는 이름의 메시지 박스를 0.5초 간 띄워두라는 명령입니다. 그리고는 바로 Pause가 진행됩니다. 0.5초가 너무 짧다고 생각되신다면 0.5를 1이나 2초로 바꾸셔도 됩니다. 스크립트 중간에 저 두 줄을 넣어두면 진행되던 스크립트가 무조건 저 자리에서 멈춥니다.

 

위의 형태의 메시지 박스는 아무런 조작 없이도 팝업했다가 사라집니다. 따라서 메시지 박스가 스크립트를 재개하는 데 방해가 되진 않습니다. 그러나 메시지 박스가 자동으로 사라지기 때문에 스크립트 전체의 흐름을 정확히 파악하고 있지 않으면 스크립트가 멈춘 것인지 아니면 오류가 난 것인지 정확히 모를 수도 있다는 단점이 있습니다.

 

MsgBox, 4, "1st Pause", Sure?
IfMsgbox, Yes ; "예"를 클릭하면
{
Pause
}

 

만약 위의 형태의 메시지 박스를 넣는다면 프로세스가 달라집니다. 위의 메시지 박스는 "1st Pause"라는 제목의 "Sure?"라는 내용을 가진 메시지 박스입니다. 그리고 메시지 박스의 Yes를 클릭하면 Pause가 실행됩니다. 이 방법은 안전하긴 하지만 조작을 한 번 해야 하므로 번거로울 수도 있다는 단점을 가집니다.

 

 

 

2. 스크립트 재개하기

재개는 간단합니다. Pause를 풀어주면 됩니다. 

 

Pause

 

 

그런데 이걸 스크립트에 그대로 넣어서는 스크립트의 흐름을 조절할 수가 없을 것입니다. 내가 어떤 키를 눌렀을 때 pause라는 명령어가 나가도록 해줘야 합니다. 예를 들어 아래와 같이 할 수 있습니다.

^#!a::  ; ctrl+win+alt+a를 누르면
send abc ; abc라고 타이핑
 
Msgbox, 0, ,Pause 1, 0.5 ; 메시지 박스를 띄우고
Pause ; pause를 

send xyz ; xyz라고 타이핑

return ; 종료

PGDN::
Msgbox, 0, ,Pause, 0.2
Pause
return

 

 

위의 코드는 한 스크립트에 들어있어야 합니다. 

 

ctrl+win+alt+a를 누르면 스크립트가 진행됩니다. 그러나 중간에 pause를 만나므로 멈춥니다. 그런데 여기서 page down 버튼을 누르면 "Pause"라는 제목의 메시지 박스가 0.2초간 띄워진 뒤 스크립트가 재개됩니다.

 

다시 말해서 pause를 풀어주는 핫키를 하나 만들어두는 것입니다. 이렇게 하면 명령들이 제대로 진행되는지 눈으로 한 번 확인을 하고 pause를 풀어서 다음으로 넘어가게 할 수 있습니다.

 

도움이 되시길 빕니다.

반응형