Darren's Devlog

Python - pywin32 활용하여 비활성 클릭 구현하기 ft.매크로 본문

Python

Python - pywin32 활용하여 비활성 클릭 구현하기 ft.매크로

Darren Gwon 2022. 9. 18. 20:42
반응형

네이버 블로그에서 티스토리로 이전하는 중입니다.

https://blog.naver.com/darren_gwon/222639582707

 

안녕하세요.

이번 포스팅에서는 파이썬으로 비활성 매크로를 위한 비활성 클릭을 하는 주제를 다뤄보려고합니다.

비활성 클릭이란, 특정 창이 다른 창에 가려져 있어도 클릭을 해주는 기능입니다.

매크로를 작동시키면서 다른 작업을 하는데 아주 유용한 기능이죠.

비활성 매크로는 매크로 제작에 있어 거의 필수라 보시면 되겠습니다.

 

필요 API
pip install pywin32

PyWin32는 윈도우에서 제공하는 Win32 API를 파이썬에서 사용할 수 있게 해주는 확장자입니다.


코드
import win32api, win32gui, win32con, win32ui

hWnd = win32gui.FindWindow(None, "창 이름")

def click1(x, y):
    lParam = win32api.MAKELONG(x, y)

    win = win32ui.CreateWindowFromHandle(hWnd)
    win.PostMessage(win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam)
    win.PostMessage(win32con.WM_LBUTTONUP, None, lParam)

def click2(x, y):
    lParam = win32api.MAKELONG(x, y)

    hWnd1 = win32gui.FindWindowEx(hWnd, None, None, None)
    win32gui.PostMessage(hWnd1, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam)
    win32gui.PostMessage(hWnd1, win32con.WM_LBUTTONUP,  win32con.MK_LBUTTON, lParam)

시행착오 끝에 찾아낸 2개의 비활성화 클릭 코드를 공유합니다.

2개 함수 중에 작동하는 코드를 사용하시면 됩니다.

Nox같은 경우엔 click1함수만 작동을 하고 click2는 작동을 안합니다.

반대로 그림판, 화상 키보드는 click2 함수만 작동을 합니다.

혹시라도 click1과 click2 모두 작동을 안한다면 관리자 권한으로 실행시켜주세요.


spy .zip
3.43MB

작업할 윈도우 창의 이름은 Spy++라는 프로그램을 이용하시면 됩니다.

프로그램을 다운로드 후 실행시켜주세요.

 

상단에 망원경 아이콘을 클릭해주세요.

Find Tool을 클릭해서 찾으려는 창의 타이틀에 드래그 해주세요.

 

위에 사진처럼 선택한 창에 대한 정보가 나올겁니다.
그 중 최상단 값에 오른쪽 마우스 → Properties 를 클릭해주세요.
 
 

Window Caption에 나온 값으로 파이썬 코드를 수정해주면 됩니다.

 

이렇게 비활성 매크로를 위한 비활성 클릭 예제를 마치겠습니다.

반응형

'Python' 카테고리의 다른 글

Python - Telegram 봇 연동하기  (2) 2022.09.19
Comments