안녕하세요. 업무 자동화 RPA 매크로 오토픽입니다.
드디어 활성 매크로 기능 설명을 마치고, 비활성 매크로 제작 강의까지 왔네요.
황성 매크로와 비활성 매크로의 차이점은 이 내용을 학습하면서 충분히 이해할 수 있을겁니다.
다만, 비활성 매크로는 몇몇 제약이 존재하고 테스트가 어렵다는 단점이 있는데요.
그럼에도 불구하고, 대부분의 업무 자동화 시스템은 비활성을 선호합니다.
모두 적용되는건 아니지만요. 그래서, 이 내용을 학습하면서 자신의 업무 환경에 테스트 해보고 정상 동작하는지를 체크해보세요.
오토픽 에디터를 실행하고, 왼쪽 도구상자의 프로그램 카테고리를 확장하세요.
핸들 추가 액션을 더블 클릭해서 스크립트에 추가 해줍니다.
참고로, 열려 있는 스크립트가 있으면 해당 스크립트에 추가됩니다.
지금까지 마우스 클릭이나 키보드 입력의 경우 클릭 위치나 입력 받을 프로그램을 활성 상태로 만들어야 했습니다.
하지만, 핸들 추가 액션을 사용하면 마우스와 키보드 신호를 받을 프로그램이 비활성 상태여도 문제없이 동작하게 됩니다.
이번에는 비활성으로 동작하는지 체크하기 위해 에디터 왼쪽 하단의 도구상자에서 마우스 클릭 액션을 추가하세요.
비활성 마우스 클릭을 위해 그림판과 같은 프로그램을 하나 실행시켜줍니다.
픽픽 프로그램을 설치하고, 아래와 같이 실행했습니다.
마우스 클릭을 확인하기 위해 그리기 브러쉬를 선택하고, 크기는 10px, 색상은 오랜지로 선택했습니다.
핸들 추가에서 프로그램 선택을 클릭하고, 픽픽으로 마우스를 이동하세요. F1을 누르면 프로그램이 선택됩니다.
마우스 클릭 액션을 선택하고 오른쪽 속성에서 입력 방식을 PostMessage로 변경하세요. 그리고 좌표는 픽픽의 도화지 중앙쯤으로 설정 해줍니다.
비활성 매크로 마우스와 키보드를 사용하려면 핸들 추가로 입력 받을 프로그램을 먼저 선택해야 합니다.
그리고, 마우스와 키보드의 입력 방식을 비활성 모드로 바꿔줘야 합니다. 비활성 모드는 PostMessage와 SendMessage 2가지를 제공합니다.
모든 Windows 프로그램은 메시지 루프(message loop)를 기반으로 동작합니다.
메시지 루프는 반복하면서 메시지를 받아들입니다. 사용자의 입력이나 기타 행동을 받아 메시지 큐에 넣습니다.
각 프로세스는 메시지들을 지속적으로 읽어 들이면서 각 메시지에 대응하는 행동을 수행합니다.
오토픽 매크로도 윈도우 프로그램이기 때문에 내부에서는 메세지 처리를 기반으로 동작하고 있습니다.
SendMessage
SendMessage는 윈도우 프로시저(Windows Procedure)를 직접 호출하며, 프로시저가 메시지를 처리할 때 까지 반환하지 않습니다.
즉, 함수 내에 다른 함수가 호출되면 그 함수가 반환할 때 까지 기다려야 하듯이 일반 함수 호출과 동일하게 동작합니다.
만약, 앞의 작업에 문제가 발생해서 처리를 무한으로 대기히야 한다면 컴퓨터가 멈출수도 있습니다.
그래서 대부분은 비동기적으로 작동하는 PostMessage를 사용합니다.
PostMessage
PostMessage는 호출된 메시지가 메시지 큐에 들어가며, 윈도우 프로시저에서 이 메시지를 처리하게 됩니다.
그렇기 때문에 메시지가 즉각 처리되는 것이 아니라 GetMessage()에 의해 해석된 메시지가 DispatchMessage()에 의해 윈도우 프로시저로 전달되어 처리됩니다.
그래서 PostMessage에 의해 전달된 메시지는 언제 처리될 지 예측하기가 어렵습니다.
기본적인 개념은 이정도로만 잡고 넘어가면 될듯 합니다. 핵심 내용은 동기적 처리인지 비동기적 처리인지가 중요합니다.
이제 매크로를 실행하고 결과를 확인 해보세요. 픽픽에 오랜지색 점이 찍히는 것을 알 수 있는데요. 이 때 마우스가 이동하지 않는다는걸 확인해야 합니다.
이번에는 비활성 멀티 다클라를 테스트하기 위해 녹스 앱플레이어를 7개 실행 했습니다.
그리고, 핸들 추가 액션을 클라이언트 수만큼 추가한 후 각각 핸들을 잡아줬습니다.
마우스 클릭 액션을 마지막에 추가한 후 녹스의 두번째 아이콘인 Tools를 클릭하도록 해주세요.
녹스를 너무 많이 실행시켜놨더니 메모리 사용량이 99프로네요.
사실, 소프트웨어 개발 도구와 크롬, 엣지등등... 많은 프로그램이 실행중이라서 리소스가 부족한 상황입니다.
매크로를 실행하면 7개 녹스가 동시에 클릭된 것을 확인할 수 있습니다.
Tools 폴더가 클릭돼서 열렸습니다.
비활성 매크로를 제작하는 방법은 제어하는 프로그램, 시스템 환경, 업무 환경에 따라서 달라질 수 있습니다.
이번 강좌에서는 비활성 마우스 동작에 대해 알아봤는데요. 다음에는 키보드에 대해 알아보고, 추가로 동일 클라이언트 이름에 대한 처리도 확인해볼께요.
추가적인 설명과 자세한 내용은 아래 동영상을 참고해주세요.
감사합니다.
'매크로' 카테고리의 다른 글
멀티 다클라 비활성 매크로 - 핸들 추가 (픽셀 서치, 이미지 서치) (0) | 2024.11.03 |
---|---|
파이썬 이미지 확대 xy좌표 (0) | 2024.11.03 |
경기도 등산 모음 추천 쌍봉산 (5) | 2024.11.03 |
매크로 프로그램에서 창 크기 변경하는 방법 (5) | 2024.10.31 |
매크로에서 프로그램 위치 이동 방법 좌표 연산 (0) | 2024.10.31 |
댓글