오토핫키(AutoHotKey) 기초강좌 #3 - 매크로 프로그래밍 1 (Button, Loop, if 사용법)




 전체 강좌

 1강 - 오토핫키(AutoHotKey) 소개

 2강 - 프로그래밍의 시작, GUI 만들기

 3강 - 매크로 프로그래밍 1 (Button, Loop, if 사용법)

 4강 - 매크로 프로그래밍 2 (ImageSearch, Send, Sleep)

 5강 - 매크로 프로그래밍 3 (Gui Submit)

 6강 - 매크로 만들기 응용 1 (if 응용, CoordMode)

 7강 - 매크로 만들기 응용 2 (핫키, if 응용)

 8강 - 매크로 만들기 응용 3 (While, GUI와 변수의 활용 1)

 9강 - 매크로 만들기 응용 4 (GUI와 변수의 활용 2)

 10강 - 매크로 만들기 응용 5 (함수1)

 11강 - 매크로 만들기 응용 6 (함수2)

 12강 - 매크로 제작 예제

















안녕하세요~ 킴영감입니다.


지난시간에는 GUI를 구성하는 코드를 알아봤습니다.


이번시간부터는 매크로를 동작시키는 코드를 작성하도록 할 것입니다.


처음 두 강의에서 조금은 지루한 설명을 드렸는데 프로그래밍이 처음이신 분들은 반드시 완벽히 이해하고 넘어오셔야 합니다. 이해하지 못하신분은 오늘강의 역시 이해가 안될 가능성이 높습니다.


그럼 세번째 강좌를 시작하겠습니다.


우선 SciTE를 실행시켜 지난시간에 작성한 코드를 불러옵니다.


맨 아래에 아래와 같이 코드를 추가합니다.



이렇게 추가 한 부분이 우리가 만들 프로그램의 큰 틀이 됩니다.


특정 버튼을 눌렀을 때 어떠한 작업을 하기 위해서는 "Button + 버튼이름 + :" 으로 시작하며 중괄호({}) 내부에 작업에 관련된 코드를 작성 하시면 됩니다.

또한, GUI, Button시작, Button종료를 각각의 파트라고 하면 각각의 파트사이에 return을 반드시 넣어주셔야 합니다. 첫번째 강좌에서 말씀드렸듯이 작성된 코드는 위에서 아래로 한줄씩 동작하며 동작의 끝을 표시하기위한 것으로 return이 사용됩니다. (return은 주로 프로그램이 끝나는 지점에 사용되지만 지금 수준에서는 똑같이 따라하시면 됩니다.)


여기까지 작성한 코드의 동작순서를 알려드리면

프로그램 실행 시 - 2~9 줄 (GUI를 보여줍니다.)

시작버튼을 누를 시 - 11~15 줄 (Button시작: 내부에 있는 코드를 실행합니다.)

종료버튼을 누를 시 - 17~20 줄 (Button종료: 내부에 있는 코드를 실행합니다.)    

여기서 내부는 중괄호 안에 작성 할 코드를 의미합니다.


이제 무한반복을 의미하는 루프를 만들어보겠습니다.

아래와 같이 코드를 추가합니다.



루프의 사용법은 아래와 같습니다.


Loop, 반복횟수

{

  반복할 작업의 코드

} 

 또는 

Loop

{

  반복할 작업의 코드

}


앞에 적힌 방법의 경우 특정 반복횟수만큼만 반복작업을 할 때 "Loop," 뒤에 반복횟수를 숫자로 적어주는 것이고

뒤에 적힌 방법의 경우 무한반복을 할 때 사용하시면 됩니다.

우리는 무한반복을 목적으로 하기에 뒤에 적힌 방법을 사용했습니다.

이해가 어려우신 분은 루프는 단순히 중괄호 내부의 코드를 반복해서 수행하는 명령어라고 생각하시면 됩니다.



그럼 여기서 들어야 하는 의문이 있습니다. "프로그램을 멈출때는 어떻게 하지?" 라는 의문입니다.

정답은 많습니다. 실제 코드를 작성하는 사람마다 다르게 작성할 수 있으며 제가 제시하는 방법이 가장 보편적으로 많이 쓰이는 방법입니다.


9번째 줄에 "매크로시작 := false" 라고 적힌 부분이 핵심입니다.

이 부분은 "매크로시작"이라는 변수에 "false"라는 값을 저장한다는 의미를 가집니다. 이처럼 어떠한 변수에 값을 저장할 때에는 ":="라는 기호를 사용합니다. 그리고 이 코드의 위치가 첫번째 return 위에 있기 때문에 프로그램을 실행 했을 때 변수가 만들어지게되고 프로그램을 종료할 때까지 사용할 수 있습니다.


이렇게 선언된 변수를 어떻게 사용하는지 살펴보겠습니다.

15번째 줄을 보시면 "매크로시작 := true" 라고 작성되어 있습니다. 시작버튼을 누르면 "Button시작:" 내부에 있는 코드를 실행하게 되고 매크로가 시작되었다는 상태를 "매크로시작"이라는 변수에 저장하는 것입니다. 이후, Loop내부에 있는 코드를 무한반복해서 실행하게 됩니다.


이와 마찬가지로 "Button종료:" 내부에 "매크로시작 := false"라는 코드를 추가함으로써 매크로가 종료되었다는 상태를 저장합니다.


하지만, 종료버튼이 눌러졌을 때에도 시작버튼의 내부에 있는 작업은 계속되고 있으며 이를 멈추기 위한 코드가 필요합니다. 종료버튼을 눌렀을 때 시작버튼의 루프를 멈추도록 하는 것이 "탈출문"이라고 하며 19~22번 줄이 탈출문을 의미합니다.


19~22번의 코드를 살펴봅시다. 처음보는 if 라는 코드가 보이시죠? if는 특정 조건을 만족할 경우 중괄호 내부에 코드를 수행하도록 합니다. 사용방법은 아래와 같습니다.


if (특정 조건)

{

  특정한 조건을 만족할 경우 실행할 코드

}


우리는 특정 조건"매크로시작"이라는 변수가 "false"값을 가질때로 코드를 작성한 것입니다. 조건을 쉽게 풀이하면 "'매크로시작'이라는 변수가 가지고 있는 값이 'false'와 같은가?" 입니다. 이처럼 왼쪽과 오른쪽의 값이 같은지 비교할 때에는 "="을 사용하시면 됩니다. (":="과 혼동하시면 안됩니다.)


종료버튼을 누를경우 "매크로시작"은 "false" 값을 가지게 되고 "if"에 표시된 조건을 만족하게 됩니다. 

"if" 내부에 있는 "break"는 루프를 강제로 탈출하라는 명령어 입니다. (루프 내부의 탈출조건이 있는곳에 적어주시면 됩니다.)


시작버튼을 눌러 루프내부의 내용을 무한반복하고 있을 때 종료버튼을 누름으로써 루프를 탈출하는 과정까지 설명드렸습니다. 


마지막으로 "Button종료:" 내부에 있는 "ExitApp"라는 명령어는 오토핫키 프로그램을 종료시키는 명령어 입니다.


이것으로 우리가 함께 작성할 프로그램의 큰 뼈대를 완성했습니다.



프로그래밍이 처음이신분은 한번보셔서는 이해하시기 어려울 것입니다. 글을 천천히 이해가 될때까지 읽어보셔야 됨을 다시한번 강조하고 싶습니다.


초보를 대상으로 하는 강좌인 만큼 앞으로도 천천히 따라하면 프로그램이 완성되도록 강좌를 진행할 예정입니다. 하지만 아주 기초적인 내용만 다루기 때문에 원하는 기능들을 추가하시기 위해서는 블로의 내용을 모두 이해하셔야 응용을 하실 수 있습니다.


세번째 강좌를 마치겠습니다.



블로그 이미지

킴영감

프로그래밍과 게임공략, 게임과 관련된 프로그램에 대한 내용을 다룹니다.

,