Click Macro 만들기 - 기록 (2)

less than 1 minute read

기본 기능 연결 완료 했습니다.

GitHub

매크로 시작 / 중지 기능을 구현하기 위해 python의 threading 기본 라이브러리를 사용했습니다. thread 돌아가는 중에 버튼 입력으로 whilde문을 멈추는 것이 관건 이었는데, threading.Event() 객체 활용하여 처리 했습니다. 현재 모습은 아래와 같습니다.

image-center

완료 기능

  • 현재 활성화 된 창에서 원하는 창 선택 가능

  • 마우스 클릭할 위치 설정 가능

  • 클릭 주기 설정

  • thread를 통한 시작 / 중지 기능 (추가)

  • X / Y Slider Position 입력 기능 (추가)

추가할 기능

  • step 설정 : click / double-click / type / enter / pause 스텝을 추가해서 일련의 sequence로 매크로를 돌리는 기능

Threading 처리 모습

Event 활용

import threading

class Ui(QtWidgets.QMainWindow):
    def __init__(self):
        self.stop_event = threading.Event()

    def run_macro(self):
        context ={'name': self.selected_window_name, 'hwnd': self.selected_window_hwnd}
        self.macroThread = threading.Thread(target=self.runMacro, daemon=True, kwargs=context)
        self.macroThread.start()

    def stopMacro(self):
        self.stop_event.set()

    def runMacro(self, **kwargs):
        self.macro = Window(**kwargs)

        while True:
            self.macro.set_foreground_window()
            self.macro.click_target_window((self.x_ratio, self.y_ratio))

            if self.stop_event.wait(timeout = self.time_interval):
                print("macro is stopped...")
                self.stop_event.clear()
                return