NGMsoftware

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

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

    팁 앤 테크

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

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

    에디터 비활성 매크로에서 창 이동과 창 크기 변경에 대한 이해.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 비활성 매크로와 다클라 매크로 또는 다계정 매크로에 대해서 가장 많이 받는 질문은 "창이 이동하거나 크기가 변경되더라도 정상 동작하는가?"입니다. 우선, 결론부터 말씀드리면 비활성 매크로에서는 창이 이동하거나 가려지는건 상관 없습니다. 하지만, 창 크기가 변경되면 이미지의 크기가 바뀌므로 [ 이미지 체크 ]나 [ 서치 ] 또는 [ 매치 ]가 정상 동작하지 않게 됩니다. 간단한 테스트를 위해 엔지엠 에디터를 실행하고, 스크립트를 하나 추가하세요.

    ※ 필독 - [ 비활성 다클라 매크로를 만들 때 주의사항 ]

    cnOuw3h.gif

     

     

    저는 녹스 앱플레이어를 대상으로 테스트할건데요. 녹스가 없다면 엘디 또는 모모, 블루스택, SCRCPY와 같은 앱플레이어를 사용해도 됩니다. 비활성 매크로를 만들기전에 제어할 프로그램의 정보를 미리 알아두는게 좋습니다. 아래 그림과 같이 [ 프로그램 정보 ] 액션을 스크립트에 추가하세요.

    1. 도구 상자 탭 클릭
    2. 응용 프로그램 카테고리 확장
    3. 프로그램 정보 액션 클릭
    4. 더블 클릭 또는 드래그로 스크립트에 추가

    TW7PGFI.png

     

     

    아래 동영상과 같이 녹스의 프로그램 정보 액션에서 매인창을 선택한 후 스크립트를 실행 해보세요. 창의 크기 및 위치를 비롯한 여러가지 정보를 알 수 있습니다.

    ECRXzep.gif

     

     

    제 경우에는 창의 위치가 "101, 132" 입니다. 창 크기는 "783, 526" 이네요. 글을 작성하기 위해 녹화나 캡쳐 프로그램 때문에 위치가 "0, 0" 은 아닙니다. 여러분들은 수동으로 좌표를 계산할 일이 없을겁니다. 하지만, 혹시라도 오프셋이나 절대 좌표를 계산해야 할수도 있기 때문에 프로그램의 위치를 0, 0으로 고정한 후 매크로를 만드는게 좋습니다. 매크로를 제작하기 전에 비활성으로 제어할 프로그램의 위치를 0, 0으로 맞추려면 [ 이동 ] 액션을 사용하면 됩니다. 아래와 같이 이동 액션 2개를 추가하세요. 그리고, 둘다 녹스 매인창을 선택 해줍니다.

    aTK1Hoa.gif

     

     

    첫번째 이동 액션은 그대로 두고, 두번째 이동 액션의 위치를 "101, 132"로 변경 해줍니다. 이 스크립트를 실행하면 녹스 매인창이 윈도우 화면 왼쪽 상단 끝으로 이동한 후 원래 위치로 되돌아옵니다. 창이 너무 빠르게 이동되면 눈으로 확인이 불가능하니 실행 전 지연 속성에 500정도 값을 입력하세요.

    7J8Yu03.png

     

     

    아래 동영상을 보면 녹스 매인창이 윈도우 좌상단으로 이동했다가 다시 원래 자리로 되돌아오는걸 확인할 수 있습니다.

    1b523z9.gif

     

     

    이렇게 이동 액션을 사용하면 항상 고정된 위치에서 작업할 수 있는 환경을 만들 수 있습니다. 이번에는 크기 변경에 대해 알아볼까요? 아래와 같이 [ 크기 변경 ] 액션도 2개 추가하세요.

    hVJ87kG.png

     

     

    첫번째 크기 변경에서 원래 크기보다 가로와 세로를 100씩 크게 설정했습니다. 그리고, 두번째 크기 변경은 원래 크기인 "783, 526"을 입력했습니다. 이동 액션에서 테스트했던것과 동일하게 크기 변경 액션도 두번째는 실행 전 지연에 500정도 입력 해주세요.

    cgnd0jC.png

     

     

    스크립트를 실행해보면 아래 동영상과 같이 녹스가 이동한 후 복귀합니다. 그리고, 크기도 커졌다가 원래 크기로 돌아옵니다.

    RrAwYfI.gif

     

     

    여기서 생각해볼 문제는 제어하려는 "프로그램의 위치가 이동될 때 스크립트가 정상 동작하는가?"와 "프로그램의 크기가 변경되었을 때 스크립트가 정상 동작하는가?"입니다. 위에서도 말했듯이 이동은 상관 없습니다. 그러나 크기는 이미지 조건에 영향을 주므로 매크로가 정상 동작하지 않게 됩니다. 그래서, 매크로를 제작할 때 창의 위치와 크기를 고정해놓고 작업하는게 좋습니다. 그래야 나중에 실수로 창 크기나 위치가 변경되었을 때 원상 복구할 수 있기 때문입니다. 창이 이동하더라도 정상 동작하는지 테스트하기 위해 아래와 같은 간단한 스크립트를 작성해줍니다.

     

    1. ADB 사용

    이동 액션은 이 테스트를 정상적으로 수행하기 위해 원래 자리로 이동하도록 했습니다. [ ADB ] 액션을 사용해서 스마트폰이나 안드로이드 앱플레이어에 연결합니다.

    nlNODrU.png

     

     

    클릭은 녹스의 Tools를 클릭하도록 설정되어 있습니다.

    Mb48HSA.png

     

     

    스크립트를 실행하면 현재 위치에서 Tools를 클릭하게 됩니다.

    vr8ECus.gif

     

     

    녹스 앱플레이어가 아래로 100픽셀 이동한 상태에서 실행해도 동일하게 Tools를 클릭합니다.

    yb7gTA5.gif

     

     

    그림판으로 녹스 창을 가린 후 실행해도 정상 동작합니다.

    sF1wc4g.gif

     

     

    ADB에 연결되어 있기 때문에 창을 최소화해도 클릭은 정상 동작합니다. 하지만, 이미지 조건들은 동작하지 않으니 이점은 참고해주세요.

    ZJHJElU.gif

     

     

    2. 핸들 사용

    [ 핸들 ]은 윈도우 API를 사용합니다. 안드로이드 앱플레이어를 제어하는 ADB보다 속도가 월등히 빠르지만~ 약간 더 복잡할 수 있습니다. 아래 동영상을 참고해서 핸들 추가 액션에서 녹스 플레이어의 매인 창을 선택(F1) 해줍니다.

    PYHRCPN.gif

     

     

    스크립트를 실행해보면 마우스 좌표 설정 없이 ADB와 동일하게 클릭하는걸 알 수 있습니다.

    r8WdKGl.gif

     

     

    이번에는 창을 아래로 100픽셀 이동한 후 다시 실행 해보세요. 이번에도 정상적으로 클릭합니다.

    dkdhiU1.gif

     

     

    그림판으로 녹스를 가려도 잘 동작하는걸 알 수 있습니다.

    8x2pN5h.gif

     

     

    안드로이드 앱플레이어의 창을 최소화 시켜놔도 클릭 정도는 정상적으로 처리됩니다. 하지만, ADB와 동일하게 이미지 조건들은 처리가 되지 않습니다. 창을 최소화하면 윈도우가 그래픽 랜더링을 하지 않기 때문인데요. 이 상태에서 캡쳐를 해봤자~ 최소화 할 때 화면으로 멈춰있기 때문입니다. 마우스를 올려보면 썸네일과 같은 작은 이미지는 가능하지만, 문제는 크기가 작아서 대상 이미지와 비교해도 의미가 없습니다.

    4pBX0z4.gif

     

     

    간단하게 ADB와 핸들(윈도우 API)을 이용해서 비활성 매크로를 만들 때 주의해야 할점과 특징들에 대해 알아보았습니다. 엔지엠 매크로는 ADB, 활성, 비활성, 클래스디디, 아두이노, 인터셉션과 같은 인터페이스를 제공합니다. 크게 활성, 비활성, 하드웨어(기계식) 신호로 분류할 수 있습니다. 다른 매크로 프로그램들과 가장 큰 차이점은 이런 인터페이스간 이동이 자유롭다는 점입니다. 위에서 ADB와 핸들 추가 액션만 변경해도 아래에 모든 액션들이 인터페이스를 자동으로 따라갑니다. 좀 더 쉽게 말해서 위쪽에 위치한 ADB, 핸들, 아두이노와 같은 액션만 갈아 끼우면 아래에 마우스나 키보드가 해당 인터페이스로 자동 변환됩니다.

    YGcElsI.png

     

     

    인터페이스를 사용하지 않으면 윈도우 기본 API(활성 모드)를 사용합니다. 또한, 다른 매크로 프로그램들이 따라올 수 없는 기술이 하이브리드 모드입니다. 활성 모드로 동작하다가 비활성 모드로 빠르고 쉽게 전환이 가능하며, 하나의 스크립트에서 활성, 비활성, 기계식(하드웨어) 입력 신호를 자유롭게 변환하면서 동시에 사용할 수 있습니다. 그렇기 때문에 각각의 인터페이스들은 연결과 연결을 끊을 수 있는 옵션이 존재합니다.  또한, 내부적으로 한번 연결된 인터페이스는 메모리에 유지하고 있기 때문에 재연결 시 속도에 저하가 없습니다. 타 메크로를 사용하다가 넘어오는 분들이 많은 이유이기도 합니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.