오토핫키(AutoHotKey) 기초강좌 #9 - 매크로 만들기 응용 4 (GUI와 변수의 활용 2)




 전체 강좌

 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강 - 매크로 제작 예제
















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


지난 시간에 배운 내용은 완벽히 익히셨나요??


이제 프로그램이 조금씩 복잡해 지기 때문에 반드시 매 강좌에 있는 내용을 99% 이해하고 넘어오셔야 합니다.


제 강좌에서 다루는 내용만 100% 이해해도 매크로 개발자는 꿈이 아닙니다!ㅋ


그럼 오늘도 열심히 달려보겠습니다.!


이번 강좌는 지난 강좌에 이어서 우리의 목적에 맞는 GUI의 사용법과 활용방법에 대해서 알아보겠습니다.


1. Checkbox


두번째로 배울 GUI는 Checkbox입니다.


Checkbox는 아래의 그림과 같이 표시됩니다.


 


대부분 프로그램 설치화면 등에서 사용해 보신 기능이죠?? 왼쪽에 보이는 네모 박스를 체크하면 1, 체크가 되어있지 않으면 0의 값을 가지게 되고 프로그램 내부에서 체크가 되었는지를 판단해서 특정 부분을 실행하는 조건으로 사용하게 됩니다. 


Checkbox의 사용방법은 아래와 같습니다.


 Gui, Add, Checkbox, 옵션, 이름


GUI를 설정하는 부분은 대부분 유사한 형태를 기지기 때문에 이제 익숙해지셨을 겁니다.


그럼 바로 코드를 작성해 보겠습니다.


오토핫키 checkbox


빨간 박스에 있는 부분이 추가 된 부분입니다. 지난 시간에 작성한 Edit 아래에 위치를 정해줬습니다. 


앞으로 GUI를 추가 할 때에 배치가 계속 바뀌기 때문에 추가한 코드의 아래에 있는 GUI코드를 반드시 확인하고 수정하시기 바랍니다. 


옵션 부분에 Checkbox의 좌표와 크기를 입력하고 변수명을 "v2번이미지클릭"으로 했습니다. 이름 부분에는 2번이미지클릭 이라고 적었습니다. 실행해 보겠습니다.



체크박스가 추가되었네요.


이제 우리가 필요한 부분에 적용 해 보겠습니다.


아래 그림과 같이 스크립트를 작성하세요.



지난 강의 까지는 1번 이미지가 있을 때 2번 이미지를 무조건 클릭하도록 했었습니다. 빨간 박스 내부의 코드를 보시면 2번 이미지를 찾고 클릭하는 것을 새로운 if가 감싸고 있는 것을 볼 수 있습니다.


Checkbox의 변수 "2번이미지클릭"을 이용해서 if의 조건으로 사용했으며, 체크가 되어있으면 변수에 1이 저장되고 체크가 되어있지 않으면 변수에 0이 들어가게됩니다. 체크가 되어있을 때에만 조건을 만족하게되어 2번 이미지를 클릭합니다.


여기까지 작성하시고 테스트 해보시기 바랍니다.


Checkbox의 옵션에 대해 추가설명 드리겠습니다.

위에서 작성한 코드를 실행할 경우 Checkbox초기값으로 체크가 해제되어 있습니다. 만약 자주쓰는 옵션인 경우에는 프로그램을 실행시켰을 때에 체크가 되어있는 것이 편하죠??

그럴 때에는 아래와 같이 GUI코드를 변경하시면 됩니다.



옵션 부분에 작성하는 기능들은 스페이스바로 구분되며 변수이름 뒤에 있는 "Checked"가 초기값을 체가가 되어있는 것으로 바꾸는 부분입니다.



2. ComboBox


ComboBox는 여러개의 항목 중 하나를 선택할 때 사용할 수 있습니다. 예를 들어 팀 선택 같은 부분에서 말이죠^^


우선 그림을 먼저 보여드리겠습니다.



보이는 그림처럼 여러개의 항목 중 하나를 선택하는 기능을 가진 것이 ComboBox입니다.


ComboBox를 사용하는 방법은 아래와 같습니다.


Gui, Add, ComboBox, 옵션, 항목1|항목2|항목3...


제일 뒤에 있는 부분이 조금 달라졌네요. ComboBox는 여러개 중에 하나를 선택하는 기능을 가졌기 때문에 각 항목의 이름이 모두 필요합니다. 항목의 이름들을 구분할 때는 "|"(shift + \를 누르면 됩니다.)를 사용합니다.


그럼 바로 실습해 보겠습니다. 아래와 같이 스크립트를 작성하세요.


오토핫키 combobox


앞에서 설명한 Checkbox와 유사한 형태를 가집니다. ComboBox의 경우 여러개의 항목을 세로로 표시해야 하기 때문에 옵션부분에 높이를 나타내는 "h + 숫자"부분을 충분히 크게 적어주셔야 하고, 이를 계산하실 때에 글자 한줄의 높이는 20으로 생각하시면 됩니다. ComboBox역시 값을 받아와야 하기 때문에 "v클릭안함"으로 변수를 추가했으며, 이어서 "Choose + 숫자"라는 옵션을 추가했습니다. "Choos + 숫자"는 프로그램을 처음 실행시켰을 때 선택할 항목을 지정하는 부분이며 "Choose1"이라고 작성했기 때문에 프로그램을 실행하면 "1번"을 선택하게 됩니다.

프로그램을 실행해서 잘 만들어 졌는지 확인해 보시기 바랍니다.


이제 콤보박스가 만들어 졌으니 이를 이용해서 코드를 작성 해 보겠습니다.


아래와 같이 스크립트를 수정하세요.



우선 조건이 많아져서 모두 테스트 할 수 있게 제일 아래에 "4.bmp"를 찾아서 클릭하는 부분을 추가했습니다.


위에서 추가해준 변수 "클릭안함"을 사용해서 3개의 if를 만들었습니다. 클릭안함은 숫자가 아닌 텍스트를 가지고 있는 변수이기 때문에 이를 비교하기 위해서는 그림과 같이 큰 따옴표("")를 반드시 적어주셔야 합니다. 조건을 표시할 때 이때까지는 "="을 사용했습니다. 하지만 오늘은 "같이 않다"라는 뜻을 가진 "!="를 사용했습니다. 

첫번째 조건을 풀어서 설명하면 ""클릭안함"에 들어있는 글자가 "1번과"같지 않으면 중괄호 내부의 코드를 실행한다"는 것입니다.


While 내부에서 코드를 실행 시키게 되고 제일 바깥에 있는 if의 조건을 검사해서 만족하면 내부로 들어가게 됩니다. 테스트를 위해 ComboBox의 변수를 사용해서 판단하는 조건이 가장 바깥에 오도록 했으며 어느 곳에서나 사용하실 수 있습니다. 


오늘 배운 내용의 핵심은 GUI변수를 if의 조건으로 사용하는 방법입니다. 사용 방법은 무척 간단합니다. 하지만 이를 응용하는 능력은 반복적인 실습을 통해서만 키울 수 있습니다. 반드시 여러가지로 바꿔가면서 실습 해 보시기 바랍니다.



이제 거의 끝이 보입니다. 


강의가 응용편으로 들어서면서 많은 분들이 혼란스러워 하거나 어려워 하시리라 예상됩니다. 

하지만 프로그래밍은 처음이 제일 어렵습니다. 저 역시 처음 배웠을 때 맨탈이 부서지는 경험을 한적이 있구요.ㅋㅋ


매번 강의 때 마다 드리는 말씀이지만 이를 극복하는 방법은 반복해서 실습하는 것 밖에 없습니다. 

간단한 순서도를 그리고 이것을 스크립트로 옮기는 연습을 익숙해 질 때까지 하셔야 합니다. 

계속 하다보면 어느 순간 원하는 것을 쉽게 구현할 수 있을 뿐만 아니라 다르게 응용할 수 있는 그림이 그려지는 것을 느끼실 것입니다.


오늘도 고생 많으셨구요~


강좌를 마치겠습니다.

블로그 이미지

킴영감

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

댓글을 달아 주세요

  • lee 2015.11.18 09:52  댓글주소  수정/삭제  댓글쓰기

    안녕하세요^^ 오토핫키 강좌내용 잘보고있습니다.
    다른어떤곳 보다도 설명이 참 잘되어있는거 같아서 많이 배웁니다 ㅠㅠ.. 감사합니다.

    그런데 질문이 있는데요,, 위와같이 ComboBox로 테스트를 했을경우,

    콤보박스1번 체크박스2번이미지클릭에 체크 경우 에서 실행시킬때 3,4번 그림만 클릭하는데..
    다른경우는 모두 잘 작동이 되는데 이거는 왜 이렇게 나오는지.. ㅠㅠ 알수있을까요..?

    감사합니다.

  • lee 2015.11.18 15:51  댓글주소  수정/삭제  댓글쓰기

    오,, 선생님 했습니다 ㅠㅠ 이제 슬슬 감이 올랑말랑 하네요..
    이해력이 엄청딸리는데 설명을 너무 자세히해주셔서.. 너무좋아요~
    잘배우겠습니다!! :)

    아, 그리고 저처럼 안되시는 분들은 콤보박스 2번이미지클릭까지 대괄호 잡지마시고
    클릭안함 1번에서 sleep 아래에서 }} 로 닫아주세용~~ 클릭안함 3번 위에 }} 두개가 되도록..
    그렇게 하니까 저는 되네용 ㅠㅠ

  • 지나가는나그네 2015.11.19 11:46  댓글주소  수정/삭제  댓글쓰기

    Loop, 카운트 설정 질문에 대한 답변 감사합니다.

    ComboBox 이용시

    ## ComboBox1목록 : 차두리, 박지성, 이영표

    ;------------------------------------------
    if(ComboBox1="차두리";)
    {
    }
    if(ComboBox1="박지성";)
    {
    }
    if(ComboBox1="이영표";)
    {
    }

    ;-------------------- 위 처럼 개별적으로만 스크립트를 짜야하나요?

    if(ComboBox1= 차두리, 박지성, 이영표)
    이런식으로 짜려고하는데 || (or) 를 사용해서 테스트해도 안먹히네요.
    방법이 있을까요?

  • 2016.02.07 21:57  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  • 2018.05.13 20:50  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  • 2019.05.24 01:07  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다