NGMsoftware

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

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

    팁 앤 테크

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

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

    에디터 RPA 매크로 - 현재 키보드가 눌린(다운) 상태인지 어떻게 알 수 있을까? (How do I know if the curre…

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 RPA 매크로에는 키보드의 상태(Down 또는 Up)를 알 수 있는 조건 액션이 포함되어 있습니다. [ 키보드 상태 체크 ] 액션을 사용하면 자동화 매크로에서 특정 키보드의 키를 눌렀는지 확인할 수 있습니다. 조건 액션이므로 해당 키의 상태에따라 다른 동작을 수행할 수 있습니다. 엔지엠 RPA 매크로를 사용하시는 분들은 조건을 어떻게 사용하는지 알고 있기 때문에 단순히 키보드 상태가 체크 되는지 확인만 해보도록 하겠습니다. 아래와 같이 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요.

    aIdzK2H.png

     

     

    아래 그램과 같이 키보드의 [ 키 다운 ] 과 [ 키 업 ] 사이에 키보드 상태 체크 액션을 추가하세요. 3개 액션 모두 키 코드 속성에 "TAB"을 선택하세요.

    rO6t4qI.jpg

     

     

    이 시나리오는 탭 키를 누르고, 탭 키가 눌린 상태인지 체크하고 탭 키를 땝니다. 그러면, 탭 키가 누른 상태에서 상태를 체크하기 때문에 결과는 True입니다. 아래 로그와 같이 [키보드 상태 체크] 액션이 시작되었습니다. 다음에 비교 결과가 True로 나옵니다.

    [[New] Script 1] 스크립트가 시작되었습니다.
    [키 다운] 액션이 시작되었습니다.
    [키 코드] TAB
    Runtime: 00:00:00.005
    [키보드 상태 체크] 액션이 시작되었습니다.
    비교 결과: True
    Runtime: 00:00:00.004
    [키 업] 액션이 시작되었습니다.
    [키 코드] TAB
    Runtime: 00:00:00.006
    [[New] Script 1] 스크립트가 완료되었습니다.
    

     

    아래와같이 키보드 상태 체크를 키 다운 위나 키 업 아래로 이동시킨 후 다시 실행 해보세요.

    v47wjsr.jpg

     

     

    결과는 예상대로 비교 결과: False가 나옵니다.

    [[New] Script 1] 스크립트가 시작되었습니다.
    [키 다운] 액션이 시작되었습니다.
    [키 코드] TAB
    Runtime: 00:00:00.005
    [키 업] 액션이 시작되었습니다.
    [키 코드] TAB
    Runtime: 00:00:00.004
    [키보드 상태 체크] 액션이 시작되었습니다.
    비교 결과: False
    Runtime: 00:00:00.005
    [[New] Script 1] 스크립트가 완료되었습니다.
    

     

    그렇다면~ [ 키보드 다운 이벤트 ]를 사용하면 어떻게 동작할까요? 키보드 상태를 좀 더 타이트하게 잡아내려면 이벤트를 사용해야 합니다. 아래와같이 스크립트를 구성 해보세요.

    CLFID31.jpg

     

     

    이번에 테스트할 시나리오는 이렇습니다. 키보드의 탭 키가 눌렸는지 체크하는 이벤트를 하나 등록 해줍니다. 그리고, 키 다운과 키업 아래에 키보드 상태 체크 조건이 있으므로 결과가 False로 나올거라고 예상할 수 있습니다. 하지만, 결과는 True가 나오는데요. 키 다운 액션이 실행되면 이벤트가 발동하고 액션을 종료로 이동시킵니다. 그래서 키 업이 수행되지 못하고 키보드 상태 체크가 동작하고 마지막 키 업이 동작하게 됩니다. 아래 로그의 마지막 2번째를 보면 키보드 상태 체크의 결과 값이 True인것을 확인할 수 있습니다.

    [[New] Script 1] 스크립트가 시작되었습니다.
    [키보드 다운 이벤트] 액션이 시작되었습니다.
    키보드 결과: NONE
    Runtime: 00:00:00.003
    [키 다운] 액션이 시작되었습니다.
    [키 코드] TAB
    Runtime: 00:00:00.006
    아이디: 종료, [그룹(종료)] 액션이 시작되었습니다.
    Runtime: 00:00:00.002
    [키보드 상태 체크] 액션이 시작되었습니다.
    비교 결과: True
    Runtime: 00:00:00.004
    [키 업] 액션이 시작되었습니다.
    [키 코드] TAB
    Runtime: 00:00:00.004
    [[New] Script 1] 스크립트가 완료되었습니다.
    

     

    이번에는 무한으로 반복되는 스크립트에서 사용자가 직접 키보드를 눌렀을 때 종료되는 예제입니다. 스크립트 구성은 아래 그림과 같고, 키보드 다운 이벤트의 감지 키는 NONE입니다. 키 코드 값이 NONE이면 모든 키에 대해 감지하게 됩니다. 특정 키만 감지하려면 키 코드를 선택하세요.

    jnCu9nb.jpg

     

     

    [ 지연 ]과 [ 액션 이동 ]으로 무한 반복되는 스크립트를 만들 수 있습니다. 이 무한 반복을 탈출하려면 아무키나 누르면 됩니다. 아래 동영상을 보면 지연과 액션 이동에서 무한으로 반복하고 있습니다. 실행중에 키보드의 아무 키나 누르면 키보드 다운 이벤트가 발동되고, 마지막 종료 액션으로 이동됩니다. 그리고, 스크립트가 종료되죠.

    upqEVzR.gif

     

     

    키 다운 상태가 아닌 키 업 상태도 이벤트로 등록할 수 있으며, 키보드의 상태에 따라 동작을 다양하게 만들 수 있습니다. 예를 들어 1 키를 누르면 2, 3, 4, 5가 연속해서 눌러지게 할 수 있습니다. 아래와 같이 스크립트를 구성하고 실행 해보세요.

    K9rm9cI.jpg

     

     

    생각한것과 다르게 동작하죠? 하지만, 잘 생각해보면 정상적으로 동작한다는걸 알 수 있습니다. 이벤트를 등록한다는건 백그라운드로 키보드의 다운을 감지하는 별도의 프로그램이 동작한다고 생각하시면 이해하기 쉽습니다. 정확하게 말하면 스레드(Thread)가 스크립트와는 별도로 동작하고 있는겁니다. 아무튼, 스크립트가 실행되면서 이벤트가 실행되고 1을 누를 때 2를 누르는 키보드 입력 액션으로 이동합니다. 키보드 입력도 키보드 다운과 업을 수행하기 때문에 키보드 다운 시점에 이벤트에 설정한 종료로 이동하고, 다시 키보드 다운이 발생하면서 무한 반복하게 됩니다.

    y23XPaU.gif

     

     

    그래서, 아래와 같이 이벤트가 한번 동작하면 [ 이벤트 삭제 ] 액션을 통해 중지 시켜야 합니다. 그래야 다음 키보드 액션들이 이벤트를 통해 다시 수행되는 일을 방지할 수 있습니다.

    bqGKTdr.gif

     

     

    이번 글에서 설명하려는 내용을 넘어서서 이벤트에 대한 이해도 같이 이루어지면 좋겠습니다. 이벤트가 로직적으로 반복하면서 체크하는것을 좀 더 쉽게 해주기는 하지만, 백그라운드에서 항상 실행되고 있다보니 스크립트를 작성하면서 인지하지 못하는 문제가 발생할 수 있습니다. 동작에 대한 정확한 이해가 없으면 이벤트로 인해 스크립트가 오작동하게 되니 이점은 주의해야 합니다^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.