NGMsoftware

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

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

    팁 앤 테크

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

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

    에디터 서브 스크립트, 예약 작업 등록, 타이머 틱 등록 액션 동작에 대한 이해.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로에는 서브 루틴을 실행하거나 중지할 수 있는 방법이 존재합니다. 서브 루틴을 즉시 실행하거나 [ 예약 작업 등록 ] 또는 [ 타이머 틱 등록 ] 액션으로 정해진 시간에 동작을 수행할 수 있습니다. 서브 루틴은 매인 스크립트가 아닌 별도의 다른 스크립트를 실행할 수 있는 방법을 의미합니다. 지금 당장 이해가 안가더라도 아래 내용을 참고하여 예제를 따라해보면 쉽게 이해할 수 있습니다. 엔지엠 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요.

    cnOuw3h.gif

     

     

    서브 루틴으로 사용할 스크립트를 2개 만들겁니다. 무한 방복되는 스크립트와 1회 수행되는 스크립트입니다. 우선 아래 그림을 참고해서 무한 반복 스크립트를 하나 만드세요.

    ZGL985L.png

     

     

    이 스크립트는 바탕화면을 핸들로 잡고, 바탕화면의 아이콘을 1초 간격으로 순차 클릭합니다. 그리고, [ 그룹 ]과 [ 액션 이동 ]으로 무한 반복하게 됩니다.

    1zu0Pxh.gif

     

     

    이번에는 한번만 수행되도록 할건데요. 위 스크립트에서 그룹과 액션 이동만 삭제하세요. 그리고, 다른 이름으로 저장(Alt > F > A)해줍니다.

    W0nZ7yI.png

     

     

    1. 서브 스크립트

    새로운 스크립트를 만들고, [ 서브 스크립트 ]를 추가해줍니다. 그리고, 아래 동영상을 참고해서 무한 반복할 수 있도록 스크립트를 구성 해줍니다.

    KGS2JrF.gif

     

     

    스크립트를 실행(Ctrl+Alt+F8)하면 아래 동영상처럼 바탕화면의 아이콘을 클릭하는 서브 스크립트가 실행됩니다. 이 때 서브 스크립트가 동기 모드이므로 매인 스크립트는 멈추고 서브 스크립트만 실행됩니다. 서브 스크립트가 완료되면 매인 스크립트가 다시 실행됩니다.

    bKAbbpq.gif

     

     

    서브 스크립트를 비동기로 변경하고 다시 실행 해보세요. 매인 스크립트와 서브 스크립트가 동시에 실행됩니다. 아웃풋 로그 내용을 보면 서브 스크립트가 실행중인데도 매인 스크립트의 무한 반복 루틴의 내용이 출력되는걸 확인할 수 있습니다.

    apccKgt.gif

     

     

    이번에는 서브 스크립트를 "바탕화면 클릭 무한"으로 변경하고, 다시 실행 해보세요. 비동기를 다시 False로 변경해야 합니다. 동기 모드이므로 아래 동영상처럼 매인 스크립트는 멈추고, 서브 스크립트가 실행됩니다. 그리고, 매인 스크립트에서 일시 중지 후 실행 그리고 중지를 눌러보면 서브 스크립트도 일시 중지되거나 중지가 동작하는걸 확인할 수 있습니다.

    2MKHhsT.gif

     

     

    비동기로 실행하더라도 매인 스크립트의 일시 중지와 중지가 서브 스크립트에 같이 적용됩니다. 비동기 모드는 매인과 별개로 독립적으로 실행된다는 의미입니다. 하지만, 별도로 스크립트를 실행한건 아니라서 매인 스크립트에 종속되어 있는 상태입니다. 그렇기 때문에 매인 스크립트와 별개로 실행되지만 일시 중지나 중지는 매인 스크립트에 영향을 받습니다.

    0hxeAvr.gif

     

     

    2. 타이머 틱 등록

    [ 타이머 틱 등록 ] 액션은 사용자가 설정한 시간에 서브 스크립트를 실행하거나 또는 실행중인 중지할 수 있습니다. 타이머 틱은 액션이 실행된 후 설정한 시간이 경과한 후 이벤트가 발생됩니다. 물론, 타이머 틱을 삭제하지 않는한 계속해서 틱(Tick)이 발생됩니다. 쉽게 말해서 틱이 10초라면 10초마다 서브 스크립트가 실행된다는 뜻입니다. 그렇기 때문에 서브 스크립트는 10초안에 완료되어야 다시 실행됩니다. 만약, 서브 스크립트가 15초동안 수행된다면 10초에 실행되고, 20초는 건너뛰고 30초에 다시 실행됩니다. 20초에는 이미 실행중이기 때문입니다. 테스트를 위해 아래와 같이 스크립트를 구성 해줍니다.

    3nh2rzU.png

     

     

    서브 스크립트는 4초간 동작합니다. 타이머 틱에 5초를 입력했기 때문에 매인 스크립트가 실행중에 틱이 발생하면 서브 스크립트가 실행되고, 매인 스크립트는 일시 중지됩니다. 그리고, 서브 스크립트가 완료되면 매인 스크립트가 다시 실행됩니다. 두번째 실행될 때는 매인 스크립트 실행 후 1초 후 서브 스크립트가 실행됩니다. 왜 이렇게 동작하는지 잘 이해가 안될수도 있는데요. 5초마다 매인 스크립트에서 틱이 발생하고, 서브 스크립트는 4초간 동작하기 때문에 다음 틱이 발생할 때까지 1초의 간격이 발생됩니다. 그래서, 서브 스크립트가 완료된 후 매인 스크립트가 1초간 실행되고 다시 서브 스크립트가 실행되므로 매인은 일시 중지 상태가 됩니다.

    TiX6ezw.gif

     

     

    스크립트를 "바탕화면 클릭 무한"으로 변경하고, 다시 실행 해보세요. 서브 스크립트가 완료되지 않기 때문에 매인 스크립트는 계속해서 일시 중지 상태로 남아있게 됩니다.

    4oNrbeF.gif

     

     

    이 글을 처음부터 테스트하고 읽어 보셨다면, "서브 스크립트와 동작이 왜 다를까?" 라는 의문이 드실겁니다. 서브 스크립트는 서브 루틴이 실행되더라도 매인 스크립트가 일시 중지되지 않기 때문입니다. 이유는 동작 방식이 다르기 때문입니다. 서브 스크립트는 자기 스스로 서브 루틴을 실행 시킵니다. 그렇기 때문에 액션 자체에 서브 루틴이 동기화될 수 있습니다. 하지만, 예약 작업과 타이머 틱은 액션에서 시간을 체크할 스레드를 생성한 후 이 스레드가 서브 스크립트를 제어합니다. 중간에 시간을 체크하는 스레드는 액션과 비동기적입니다. 그렇기 때문에 자신이 속한 매인 스크립트를 멈출 수 있는 권한이 없습니다. 따라서, 매인 스크립트를 일시 중지 상태로 만들고 스크립트를 실행하게 됩니다.

    ※ 잘 이해가 안가도라도 그냥 동작 방식의 차이라고 생각하고 넘어가도 됩니다^^

     

    타이머 틱에 처음 실행 옵션을 True로 변경해줍니다. 그리고, 비동기True로 변경하세요. 스크립트를 실행하면 5초 후가 아닌 바로 서브 스크립트가 실행됩니다. 이렇게 동작하는 이유는 처음 실행 옵션을 True로 변경했기 때문입니다. 그리고, 옵션을 비동기로 설정하면 매인 스크립트와 별개로 동작하기 때문에 매인 스크립트가 일시 중지 상태가 되지 않습니다. 하지만, 매인 스크립트를 일시 중지하거나 중지하면 비동기로 실행중인 서브 스크립트도 영향을 받습니다.

    1GcRUi8.gif

     

     

    3. 예약 작업 등록

    [ 예약 작업 등록 ]은 타이머 틱 등록 액션과 동일합니다. 다만, 시간을 처리하는 방식이 다를 뿐입니다. 타이머 틱과 동일하게 테스트하기 위해 5초마다 실행되도록 크론탭 설정을 "*/5 * * * * *"와 같이 입력합니다. 그리고, 체크 간격을 100으로 변경 해주세요. 체크 간격은 중요한 옵션입니다. 이 옵션을 이해하려면 [ 여기 ] 글을 참고하세요.

    Ilp7YVj.png

     

     

    스크립트를 실행하면 5초마다 서브 스크립트가 실행되는걸 알 수 있습니다. 타이머 틱과 동일하게 동기 모드에서는 서브 스크립트가 실행될 때 매인 스크립트는 일시 중지 상태가 됩니다. 그리고, 서브 스크립트가 완료되면 매인 스크립트가 자동으로 다시 실행됩니다. 

    mB1s9Eh.gif

     

     

    이 후의 테스트는 타이머 틱과 동일합니다. 비동기 모드와 무한 반복 스크립트를 차례대로 테스트 해보고 결과를 확인 해보세요. 서브 스크립트(서브 루틴)은 매인 스크립트가 실행되면서 뭔가 다른 업무를 수행하는 스크립트를 실행시키기 위한 방법을 제공합니다. 이외에도 어떤 정해진 시간에 동작하는 스크립트를 만들때도 유용하게 사용할 수 있습니다. 

     

    이 글이 도움이 되셨다면~ 커피 한잔이라도 후원 부탁드립니다^^

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.