NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 비활성 윈도우 매크로 프로그램 만들기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 오늘은 분야별로 비활성 매크로를 어떻게 만드는지에 대해 알아보도록 하겠습니다. 일반적으로 윈도우의 Win32 인터페이스를 사용해서 비활성 매크로 프로그램을 만들 수 있습니다. 게임이나 웹, 안드로이드 애물레이터등등... 모든 분야에서 비활성 업무 자동화가 가능합니다.

    Krv2XXt.png

     

     

    ※ 비활성이란?

    윈도우 매크로 프로그램에서 비활성은 자동화 할 프로그램(게임, 웹, 주식, 코인등등...)에 직접 마우스, 키보드가 입력되지 않고, 소프트웨어적으로 신호를 주는 개발 방식을 말합니다. 비활성으로 매크로를 만들면, 마우스와 키보드의 간섭 없이 멀티 다클라/다계정 자동화가 가능합니다. 또한, 창이 이동되거나 가려져도 정상 동작하고 매크로가 동작중에도 사용자는 다른 작업을 할 수 있습니다. 자세한 내용은 아래 글을 참고하세요.

    활성, 비활성, 하드웨어 모드 이해하기 ]

    3I1OPdB.png

     

     

    비활성 윈도우 매크로 프로그램에 대한 이해는 여기까지 설명하고, 본격적으로 엔지엠 RPA 매크로 도구를 이용해서 분야별로 비활성 윈도우 매크로를 어떻게 제작하는지 알아보도록 하겠습니다. 우선, 엔지엠 매크로 에디터를 실행하고 새로운 스크립트를 하나 추가하세요.

    cnOuw3h.gif

     

     

    일반적으로 가장 많이 사용하는 방식은 [ 핸들 추가 ] 액션을 이용하는겁니다. 핸들은 자동화 할 프로그램의 고유한 식별자라고 생각하시면 이해하기 쉽습니다. 윈도우에서 어떤 프로그램을 실행하면, 해당 프로그램은 메모리에 올라갑니다. 이 때 프로그램들은 윈도우로부터 고유한 식별 값을 부여받습니다. 이 값을 핸들이라고 부릅니다. 메모장을 하나 실행하고, 아래 동영상처럼 핸들 추가로 창을 선택 해보세요.

    ※ 창 선택은 F1을 누르세요.

     

     

    메모장을 선택하면 아래와 같이 핸들 값이 표시됩니다. 이 값은 윈도우상에서 실행중인 모든 프로그램들과 충돌되지 않도록 유니크하게 부여됩니다. 핸들은 윈도우 핸들과 컨트롤 핸들이 있습니다. 윈도우 핸들은 메모장 자체를 의미하고, 컨트롤 핸들은 사용자가 선택한 컨트롤을 말합니다. 메모장에서 컨트롤은 텍스트를 쓸 수 있는 인풋박스를 말합니다.

    MYcVcXa.png

     

     

    키보드의 텍스트 쓰기 액션을 하나 추가하고, 아래와 같이 설정해보세요.

    bd9vC4I.png

     

     

    매크로를 실행 해볼까요? 실제로 키보드 입력 없이 메모장에 텍스트가 입력됩니다. 그리고, 창을 가리거나 최소화해도 텍스트가 입력되는걸 확인할 수 있습니다. 참고로, 여기에서 테스트하지는 않았지만 마우스 클릭도 이와 동일합니다. 여러분들이 직접 그림판에서 테스트 해보세요^^

     

     

    이미지 서치, 이미지 매치와 같은 윈도우 화면 인식 기능들과 픽셀 서치와 같은 색상 인식 기능도 비활성으로 동작됩니다. 하지만, 일부 프로그램들은 비활성 API가 막혀 있어서 정상 동작하지 않을수도 있습니다. 이런 경우에는 원격 제어 프로그램이나 안드로이드 애뮬레이터와 같은 프로그램을 사용할 수 있습니다. 대표적으로 녹스, 엘디플레이어등등이 있고, 실제 핸드폰을 컴퓨터에 USB로 연결해서 사용할수도 있습니다. 새로운 스크립트를 하나 더 만들어보세요.

    File > 새로 만들기 > 스크립트

    OkOzqnn.png

     

     

    ADB, SCRCPY에서 스와이프(스크롤)하거나 녹스, 엘디플레이어에서 스와이프가 필요한 경우들이 있습니다. 엔지엠 매크로를 사용하시는 고객분이 엘디플레이어에 네이버 앱을 설치하고, 스크롤 또는 스와이프가 동작하지 않는다고 해서 좀 더 자세한 내용을 작성해보도록 하겠습니다. 우선, 다양한 방식의 스와이프나 스크롤에 대해 아래 글을 한번 읽어보세요.

    녹스, 엘디, 블루스택, 안드로이드 플레이어에서 스크롤하는 방법. (휠 또는 스와이프) ]

    ZCIlg63.gif

     

     

    엘디플레이어를 실행하고, 네이버 앱을 설치했습니다. 그리고, 엔지엠 매크로 에디터도 실행한 후 새로운 스크립트를 하나 추가하세요.

    cnOuw3h.gif

     

     

    ADB ] 연결 액션을 스크립트에 추가하고, 에디터 좌측의 도구상자에서 마우스 [ 이동 ] 액션도 추가하세요.

    sz5RGcS.png

     

     

    ADB는 안드로이드 기기가 컴퓨터에 연결되어 있으면 자동으로 인식하기 때문에 속성에서 변경할 내용은 없습니다. 마우스 이동만 아래 동영상과 같이 속성을 설정하세요.

     

     

    완성된 매크로를 실행 해볼까요? 아래 동영상처럼 스와이프 또는 스크롤이 잘 동작하는걸 확인할 수 있습니다.

     

     

    윈도우나 안드로이드 기기에서 스와이프 또는 스크롤은 가속도가 영향을 주기 때문에 적절하게 값을 설정하는게 중요합니다. 미세하게 조절하는건 어렵지만, 스와이프 시작과 마우스 좌표 거리를 짧게하고, 이동 시간을 줄여보면 아래 동영상처럼 약간씩 스와이프(스크롤)할 수 있습니다.

     

     

    물론, ADB가 아닌 윈도우 핸들로도 스와이프가 가능합니다. 아래 글을 참고 해보세요.

    매크로에서 엘디플레이어 네이버 앱 스크롤(스와이프) 하는 방법. (with 핸들) ]

     

     

    마지막으로 웹업무 자동화입니다. 웹업무도 ADB와 동일하게 API를 사용해야 합니다. 핸들로도 가능하지만, 정확한 업무 자동화를 위해서는 API를 사용하는게 좋습니다. 웹업무 관련해서는 몇가지 중요한 포인트가 있습니다. 웹API와 웹서비스, 웹소켓을 이용한 커스텀 모듈 개발입니다. 여기에서는 간단하게 웹API를 이용한 비활성 RPA 매크로 프로그램을 제작하는 방법만 설명합니다.

    ※ 웹서비스, 웹소켓은 자동화 하려는 사이트의 구조 및 패킷등을 분석할 수 있어야 합니다.

     

    골프나 캠핑, 폐쇄몰, 테니스, 중고차등등... 다양한 곳에서 빠르게 예약을 하기 위한 매크로를 제작해서 사용합니다. 이와 관련해서 많은 분들이 비슷한 질문을 하는데요. 매번 같은 답변을 반복하다보니 업무에 지장이 생기는 경우들이 있습니다. 그래서, 웹 API를 이용한 업무 자동화에 대해 좀 더 깊이있는 설명이 필요한거 같습니다. 이 글은 매크로가 필요 없는 예약 사이트인 캠핏을 예로 들어서 설명을 진행합니다. 천천히 따라해보시면 네이버 카페 선착순이나 밴드 선착순등등... 예약 관련 매크로를 직접 제작해서 사용할 수 있을겁니다. 웹 API 관련 내용들을 집중적으로 학습하는 글이니 참고하세요^^

    업무 자동화 매크로 프로그램 개발 의뢰 ]

     

    엔지엠 매크로 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요.

    cnOuw3h.gif

     

     

    웹 API의 [ 연결 ] 액션을 스크립트에 추가하세요.

    ※ 액션 추가 방법: 더블 클릭 또는 마우스 드래그

    Fui5lbh.png

     

     

    속성을 클릭하고, 아래와 같이 설정 하세요.

    • 웹사이트 주소: https://camfit.co.kr
    • 웹드라이버 설치: True
    • 아이디: camfit (자유)

    8AfUgnU.png

     

     

    저는 카라반을 선택할건데요. 캠핏 사이트에서 아래와 같이 아이콘 형식의 버튼으로 되어 있습니다. 이 버튼을 먼저 클릭해야 합니다. 우선은 클릭할 아이콘의 엘리먼트(Element: 요소)를 찾아야 합니다. 아래 동영상을 참고하셔서 카라반 아이콘 버튼의 XPath를 복사 하세요.

    ※ 엘리먼트란? 엘리먼트는 홈페이지 또는 웹사이트에서 텍스트나 버튼 이미지등등... 시각적으로 보이는 것들과 보이지 않는 것들을 모두 말합니다. 예를 들어서, 목록형 엘리먼트가 있다고 생각 해보세요. 여기서 목록들은 눈에 보이지만 이 목록을 감싸고 있는 테이블 또는 셀렉트는 보이지 않습니다. 홈페이지나 웹사이트, 웹페이지를 구성하는 모든 것들을 요소라고 부릅니다.

     

     

    카라반 버튼을 클릭하기 위해 [ 버튼 ] 액션을 스크립트에 추가 해줍니다. 위에 연결 액션을 추가한것과 동일하게 해당 액션을 더블 클릭하거나 드래그하면 됩니다.

    6S9fJ9s.png

     

     

    아래 그림과 같이 버튼 액션의 속성에서 연결 액션의 아이디를 선택하고, XPath 옵션으로 변경하세요. 그리고, 복사한 XPath 값을 요소 이름 속성에 붙여넣기 해줍니다.

    O5OsDJP.png

     

     

    정상적으로 클릭이 되는지 확인 해볼까요? 너무 빠르게 지나가서 잘 확인이 안될수도 있는데요. 캠핏에서 카라반 버튼을 클릭해서 잘 넘어갔습니다.

     

     

    대부분 웹업무 자동화 매크로는 이와 같이 F12로 엘리먼트의 정보를 알아내서 버튼 또는 텍스트 액션으로 클릭하거나 내용을 인식해서 조건 처리를 해야 합니다. 이렇게 해서 엔지엠 매크로를 이용한 비활성 업무 자동화 제작 방법을 알아봤습니다. 이외에도 몇가지 더 존재하지만, 이 부분들은 모두 커스텀 모듈로 추가적인 개발이 필요합니다. 또한, 자동화 하려는 프로그램 또는 사이트의 분석이 선행되어야 합니다. 코딩을 모르더라도 누구나 쉽게 업무 자동화 및 테스트 툴을 만들려면 이정도는 기본적으로 알고 있어야 합니다. 물론, 게임이나 주식에 이용하시는 분이라면 굳이 ADB나 웹API까지 알 필요는 없습니다. 선착순, 트레픽 슬롯, 유효타와 같이 웹업무는 ADB를 알 필요는 없겠죠? 자신이 목표로 하는 자동화에 대해서 깊이 있게 학습하시면 원하는 결과을 얻을 수 있을겁니다^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

     

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

    댓글목록

    등록된 댓글이 없습니다.