PyWin32 마우스 컨트롤하기

PyWin32를 이용해서 마우스 커서의 위치를 찾거나 이동시키고, 클릭, 드래그 등의 동작을 간단하게 수행할 수 있습니다.


마우스 커서 위치 얻기

예제 - GetCursorPos()

import win32api

pos = win32api.GetCursorPos()
print(pos)

win32api 모듈의 GetCursorPos()은 마우스 커서의 현재 위치를 튜플의 형태((x, y))로 반환합니다.



마우스 커서 이동시키기

예제 - SetCursorPos()

import win32api

pos = (200, 200)
win32api.SetCursorPos(pos)

SetCursorPos() 메서드는 마우스 커서의 위치를 입력받은 튜플의 위치((x, y))로 이동시킵니다.



마우스 클릭하기

예제 - mouse_event(), mouse_click()

import win32api
import win32con


def mouse_click(x, y):
    win32api.SetCursorPos((x, y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)


mouse_click(300, 300)

win32con은 Win32 API와 관련된 다양한 상수들을 모아놓은 모듈입니다.

mouse_click(x, y) 함수를 하나 만들었습니다. 우선 SetCursorPos((x, y))를 이용해서 커서의 위치를 (x, y)의 위치로 이동합니다.

mouse_event()의 첫번째 파라미터에는 마우스의 동작과 클릭에 대한 상수를 넣어줍니다. ‘win32con.MOUSEEVENTF_LEFTDOWN’을 입력해주면 왼쪽 버튼이 눌러지게 되고, ‘win32con.MOUSEEVENTF_LEFTUP’을 입력해주면 눌려진 상태가 해제됩니다.

두번째, 세번째 파라미터에는 마우스 이벤트가 수행될 x, y 위치를 입력합니다. 세, 네번째 파라미터는 우선 0으로 합니다.

mouse_event() 함수에 대한 자세한 내용은 다음의 링크에서 참고할 수 있습니다. (mouse_event 함수)

결과적으로 mouse_click(300, 300)을 통해 (x, y) = (300, 300)의 위치로 마우스 커서를 이동시켜서 왼쪽 버튼을 한 번 클릭합니다.



마우스 커서 영역 제한하기

예제 - ClipCursor()

import win32api

# (left, top, right, bottom) 영역으로 마우스 커서 제한하기
win32api.ClipCursor((200, 200, 700, 700))

# 마우스 커서 제한 해제하기
# win32api.ClipCursor((0, 0, 0, 0))
# win32api.ClipCursor()

ClipCursor()는 마우스 커서의 위치를 직사각형 영역으로 제한합니다.

(left, top, right, bottom) 값을 튜플의 형태로 입력해줍니다.

영역의 제한을 해제하고 싶으면 (0, 0, 0, 0)을 입력하거나 빈 상태로 두면 됩니다.



이전글/다음글