NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    오토핫키 오토핫키 매크로 만들기. (GUI 만들기)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 이제 정말 재미있는 시간이 왔습니다. 오토핫키 매크로 만들기 글을 작성하면서 프로그래머처럼~ 코딩만했는데요. 오늘은 시각화할 수 있는 오토핫키 GUI를 만드는 방법에 대해 알아보도록 하겠습니다. 자~ 우선, Visual Studio Code를 실행하고 새로운 스크립트를 하나 추가해줍니다. 혹시? 오토핫키 개발 환경이 없으신가요? 그렇다면 아래 글을 참고해서 개발 환경부터 만들어야 합니다.

    1부 - 오토핫키 개발 환경 만들기 ]

    2부 - 오토핫키 마우스 매크로 만들기 ]

    3부 - 오토핫키 키보드 매크로 만들기 ]

     

    아래 동영상을 참고해서 autohotkeyGUI.ahk 파일을 하나 추가해줍니다.

    mjSXKUU.gif

     

     

    시작하기에 앞서 오토핫키(AutoHotKey)뿐만 아니라 엔지엠 매크로 또는 파이썬 매크로, C# 매크로를 만들더라도 항상 사용 방법을 쉽게 확인할 수 있는 도움말을 열어둬야 합니다. C#이나 파이썬은 매크로를 만들기 위한 언어가 아니라서 참고할만한 정리된 사이트가 없습니다. [ 엔지엠소프트웨어 ]에서 관련 내용들을 모아두었으니 참고하시면 좋을거 같네요. 오토핫키는 아래 링크에서 함수 목록을 쉽게 찾을 수 있습니다.

    오토핫키 명령어 참고 ]

    엔지엠 매크로 도움말 ]

     

    엔지엠 매크로의 GUI(Graphical User Interface)와 비교해보면 오토핫키의 GUI는 노가다의 극치라고 해도 과언이 아닙니다. 그래서, 상당히 복잡한 GUI 구성을 가진 오토핫키 매크로를 보면 정말 대단하다는 생각을 안할 수 없게됩니다^^; 많은 노력과 시간이 들어갔을테니까요. GUI는 사용자가 눈으로 확인하면서 프로그램과 상호 작용할 수 있도록 해주는 모든 것을 말합니다. 엔지엠 에디터나 플레이어가 GUI입니다. 오토핫키 1~3부까지 GUI 없이 명령으로만 처리 했었던걸 기억하시죠?

    FHwhExF.png

     

     

    오토핫키에서 GUI는 아래와 같이 사용합니다.

    Gui, Add, 사용할 기능, 옵션, 이름

     

    아래와 같이 코드를 작성하고, 실행 해보세요.

    #SingleInstance, Force
    SendMode Input
    SetWorkingDir, %A_ScriptDir%
    Gui, Add, Text, x30 y5 w110 h20, 엔지엠소프트웨어
    Gui, Add, Text, x40 y25 w70 h20, NGM 매크로
    Gui, Add, Text, x50 y50 w50 h20, Count: 0
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show

     

    매크로가 동작할 수 있는 코딩은 없지만~ 간단하게 GUI를 만들었습니다.

    SYCU4Ro.png

     

     

    엔지엠 매크로는 비주얼 스튜디오(Visual Studio)를 이용해서 GUI를 만들 수 있습니다. 마이크로소프트에서 제공해주는 수백개의 GUI 컨트롤과 엔지엠소프트웨어에서 제공하는 디자인 전용 콘트롤을 모두 사용할 수 있습니다. 콘트롤들을 쉽고 빠르게 정리할 수 있고, 사용자는 시각적으로 크기와 위치를 조절할 수 있습니다.

    LFPaQVJ.gif

     

     

    실행(Visual Studio에서는 F5를 눌러서 실행합니다.) 해보면 아래 그림과 같이 프로그램이 실행됩니다. 위에서 디자인 한것과 동일하게 표시되죠? 직접 오토핫키 GUI를 만들어보면 엔지엠 디자이너가 얼마나 효율적인지 알 수 있을겁니다^^; 해보지 않으면 알 수 없는 부분이죠.

    BPHurm3.png

     

     

    다시 오토핫키로 돌아와서 시작 버튼을 눌렀을 때 동작할 매크로를 작성 해줍니다. 오토핫키에서 이벤트는 "버튼+버튼 이름"으로 연결할 수 있습니다. 오토핫키의 버튼은 시작, 종료이므로 Button시작Button종료로 함수를 만들어야 합니다. 아래 코드를 보시죠~

    #SingleInstance, Force
    SendMode Input
    SetWorkingDir, %A_ScriptDir%
    Gui, Add, Text, x30 y5 w110 h20, 엔지엠소프트웨어
    Gui, Add, Text, x40 y25 w70 h20, NGM 매크로
    Gui, Add, Text, x50 y50 w50 h20, Count: 0
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show
    
    Button시작:
    {
    
    }
    
    Button종료:
    {
    
    }

     

    엔지엠 디자이너에서는 버튼을 더블 클릭하면 자동으로 이벤트 핸들러가 추가됩니다. 오토핫키와 동일하게 매크로 동작은 중괄호 안에 작성하면 됩니다.

    Eota496.gif

     

     

    이제 완성된 스크립트 내용을 한번 보도록 하겠습니다.

    #SingleInstance, Force
    SendMode Input
    SetWorkingDir, %A_ScriptDir%
    Gui, Add, Text, x30 y5 w110 h20, 엔지엠소프트웨어
    Gui, Add, Text, x40 y25 w70 h20, NGM 매크로
    Gui, Add, Text, x50 y50 w50 h20 vCnt, Count: 0
    Gui, Add, Button, x20 y80 w110 h20, 시작
    Gui, Add, Button, x20 y110 w110 h20, 종료
    Gui, Show
    
    매크로시작 := False
    Return
    
    Button시작:
    {
        매크로시작 := True
        카운트 := 0
       Loop
       {
        if (!매크로시작)
        {
            Break
        }
        카운트++
        GuiControl,, Cnt, Count: %카운트%
        Sleep, 300
       }
    }
    return
    
    Button종료:
    {
        매크로시작 := False
        ExitApp
    }
    return

     

    아직까지 변수와 연산자에 대해 학습하지 않았기 때문에 위 스크립트가 정확하게 어떻게 동작되는지 잘 이해가 안갈수도 있습니다. 매크로시작 변수의 값을 False로 초기화 했습니다. 이렇게하는 이유는 시작 버튼과 종료 버튼을 누를 때 상태를 파악하기 위함입니다. 대부분의 프로그래밍 언어들은 컨트롤의 상태를 직접 가지지만 오토핫키는 그렇지 못한 문제가 있습니다. 그래서 외부에서 제어해야 합니다. 여기서 중요한 부분은 GuiControl입니다. 이 명령을 사용하면 Gui에 추가된 컨트롤을 제어할 수 있게됩니다. 이 스크립트에서는 "Count: 0"을 반복될 때마다 1씩 증가시켜줍니다. 실행하고, 테스트를 해볼까요?

    AT2GcAJ.gif

     

     

    몇몇 부분 디테일하게 다듬어야 하겠지만, 의도한대로 잘 동작하는걸 확인할 수 있습니다. Loop(루프)는 반복할 수 있는 명령입니다. 영화나 만화에서 루프물이라는 말을 들어보셨을겁니다. 시간이 반복하면서 겪는 에피소드들을 재미있게 풀어나가는 방식인데요. 프로그래밍에서도 동일합니다. Loop로 구간을 설정하고 해당 구간을 반복시켜줍니다. 몇회 반복할지 설정할 수 있는데요. 이번 예제에서는 무한 반복하도록 해두었기 때문에 횟수를 입력하지는 않았습니다.

     

    다음에는 아직 알아보지 않은 루프나 조건등등... 기초적인 함수에 대해 알아보도록 하겠습니다. 아래는 엔지엠 디자이너에서 마우스 클릭하는 코드를 간단하게 구현한 내용입니다.

            private void playButton1_Click(object sender, EventArgs e)
            {
                ng.Position = new System.Drawing.Point(0, 0);
                ng.Click(ng.MouseButton.Left);
            }
    
            private void stopButton1_Click(object sender, EventArgs e)
            {
                Close();
            }

     

    ng.Position에 설정한 좌표를 클릭하게 해줍니다. 오토핫키나 엔지엠 매크로나 파이썬등등... 대부분 제작 프로그램들이 간단하게 사용할 수 있도록 되어 있습니다. 다만, 오토핫키와 파이썬은 코딩해야 하는 방식이고, 엔지엠 매크로는 GUI를 통해 사용자가 쉽게 매크로를 만들 수 있다는 차이점이 있습니다. 엔지엠 매크로 무료 버전을 사용해보면 좀 더 간단하게 매크로를 만들 수 있을겁니다^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.