개발/파이썬

업무 자동화 (aka메크로) 정리

ksy0314 2022. 7. 15. 20:34

파이썬 win32 라이브러리를 사용하여 비동기 클릭 코드입니다.

 

단순 반복 작업에 사용하시면 됩니다.

 

(그렇다고 게임 메크로로 사용하시다 걸리셔도 난 모름)

import random
import win32api, win32gui, win32con
import time
import getColor
import sys


#비동기로 해당 프로그램의 x,y 좌표에 클릭 신호 전달
def click(x,y):
    hWnd = win32gui.FindWindow(None, "프로그램 이름")
    lParam = win32api.MAKELONG(x, y)

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

#해당 범위에 랜덤 좌표에 클릭
def randomClick(x1,x2,y1,y2):
    randomx = random.randrange(x1,x2+1)
    randomy = random.randrange(y1,y2+1)
    click(randomx,randomy)

#random 함수와 time 함수를 사용해서 랜덤 딜레이
def randomDelay(x):
    #최소 딜레이 시간
    randomt = 1
    #99분의 1의 확률로 20초 딜레이
    random99 = random.randrange(0,150)
    if random99 == 0:
        print("20초 딜레이")
        time.sleep(20)
    #25분의 1의 확률로 3초 딜레이
    random25 = random.randrange(0,30)
    if random25 == 0:
        print("3초 딜레이")
        time.sleep(3)

    if x == -1:
        ("딜레이 없음")
        return
    elif x == False:
        randomt += 0.1*random.randrange(0,6)
    else:
        randomt += x + 0.1*random.randrange(0,6)
    print(randomt, "초 동안 딜레이")
    time.sleep(randomt)

window 디펜더가 악성 프로그램으로인식하는 경우도 있습니다.

 

이때는 폴더나 파일을 예외처리 해주시면 됩니다.