에디터 멀티 다클라 또는 멀티 다계정에서 동기적으로 매크로를 실행하는 방법. (묶음 처리 시작, 묶음 처리 종료)
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로는 비활성 매크로 프로그램에 최적화되어 있지만, 활성 모드에서도 멀티 다클라 및 멀티 다계정 매크로를 제작할 수 있습니다. 다만, 비활성과 차이점이 존재하고 문제 없이 다클라 환경을 구성하려면 [ 묶음 처리 시작 ] 액션과 [ 묶음 처리 종료 ] 액션을 잘 활용해야 합니다. 우선은 문제가 되는 상황을 연출해보고 어떻게 해결해야 하는지에 대해서 알아보겠습니다. 엔지엠 매크로 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요.
그림판 2개와 메모장 2개를 실행하세요. 그리고, 각각 이름을 1과 2로 설정합니다. 아래 그림에서 그림판과 메모장의 제목을 확인 해보세요.
스크립트를 2개 추가한 후 각각 [ 마우스 다운 ]과 [ 마우스 업 ] 액션을 추가 했습니다. 일반적으로 [ 마우스 클릭 ] 액션을 사용합니다. 하지만, 에러 상황을 연출하기 위해 느리게 동작하는 마우스 다운과 마우스 업을 사용했습니다.
마우스 업은 실행 전 지연에 300정도 지연을 설정 해주세요.
그림판 1과 그림판 2는 각각 동기 모드 테스트 1 스크립트와 동기 모드 테스트 2 스크립트가 클릭을 수행합니다. 스크립트 2개를 동시에 실행하면 그림판 1에서 마우스 다운이 발생하고 마우스를 때는 업이 발생하기 전 그림판 2에서 마우스 다운이 발생합니다. 그리고, 0.3초 후 그림판 1에서 마우스를 때고 그림판 2에서 마우스를 때게 됩니다. 활성 모드는 마우스가 하나라서 아래 동영상과 같이 의도하지 않은 동작이 발생합니다.
그림판 1에서 마우스 다운이 발생하고 그림판 2에서 또다시 마우스 다운이 발생합니다. 그리고 마우스 업이 나중에 발생해서 클릭이 아닌 드래그와 비슷한 효과가 나타났습니다. 각각의 그림판에 클릭하기 위한 매크로 스크립트인데요. 의도하지 않은 동작이 발생합니다. 마우스 클릭 액션은 매우 빠른 속도로 마우스 다운과 업이 발생해서 이런 간섭이 일어날 수 있는 확률이 작지만, 10개, 20개, 30개... 멀티 다클라 환경에서는 문제가 발생할 수 있습니다. 이번에는 묶음 처리 시작과 묶음 처리 종료 액션을 아래와 같이 마우스 다운과 마우스 업 액션을 감싸보세요.
※ 동기 모드 테스트 1, 동기 모드 테스트 2 둘다 감싸야 합니다.
매크로를 다시 실행해보면 아래와 같이 마우스 다운과 마우스 업이 묶여서 실행되는걸 확인할 수 있습니다. 이번에는 정상적으로 동작합니다.
이제 메모장에 텍스트를 써볼까요? 아래와 같이 [ 윈도우 활성화 ] 액션과 [ 텍스트 쓰기 ] 액션을 추가하세요. 윈도우 활성화 액션으로 메모장 1과 메모장 2를 각각 설정하세요.
텍스트 쓰기는 스크립트 1과 스크립트 2 각각 다르게 설정 했습니다.
- 동기 모드 테스트 1: 안녕하세요. 엔지엠소프트웨어입니다.
- 동기 모드 테스트 2: 엔지엠 매크로 에디터
매크로를 실행하면 아래와 같이 정상적으로 동작합니다.
묶음 처리 체크를 풀면 아래와 같이 동작하게 됩니다. 의도하지 않은 동작입니다. 묶음 처리와 차이점을 확실히 알 수 있습니다.
이건 논외인데요. 비활성으로 매크로 프로그램을 제작하면 간섭 없이 동작할 수 있습니다.
비활성 매크로 신호는 자동화할 프로그램(게임, 주식, 코인, 예매, 티켓등등...)에서 차단하는 경우들이 있습니다. 이런 경우에는 활성 모드로 매크로를 제작해야 하는데요. 컴퓨터 한대에 매크로 하나만 돌리기엔 리소스 낭비가 클겁니다. 좀 더 효율적으로 매크로 프로그램을 사용하려면 멀티 다클라로 동작할 수 있게 제작하는게 좋습니다. 하지만, 멀티 환경에서 동기적으로 작동하는 매크로 프로그램을 제작하는건 난이도가 높습니다. 그래서, 시스템을 잘 설계하고 구성해야 안정적으로 동작하는 매크로 프로그램을 제작할 수 있습니다^^
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글비활성으로 웹브라우저에서 스크롤하는 방법. (마우스 휠) 23.11.09
- 다음글웹소켓 API의 웹브라우저 콘트롤을 이용해서 현재 브라우저에 엘리먼트가 있는지 확인하는 방법. (IsElementVisiable) 23.11.07
댓글목록
등록된 댓글이 없습니다.