프로그래밍/파이썬

파이썬 -> 키보드 마우스 입력

레곤플라이 2009. 7. 14. 14:07

 

pywinauto를 이용하는 경우

from pywinauto.application import Application
app = Application.start("notepad.exe")
app.Notepad.SetFocus()
app.Notepad.TypeKeys('''abcdefghijklmn{ENTER}opqrstuvwxyz''')


특정 창을 찾아서 입력할 경우

from pywinauto.application import Application
app = Application()
iffview = app.window_(title_re=".*IrfanView")
irfview.DrawOutline()

 

폰트 설정하는 예제
window = findwindow(title = "Untitled - Notepad", class = "Notepad")
SendKeys(window, "%OF")  # Format -> Font
fontdialog  = findwindow("title = "Font")
buttonClick(fontdialog, "OK")

 

 

 

 

이건 API를 사용하는 경우

import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.AppActivate('Some Application Title')We use a Windows Script Host COM interface to access the AppActivate


키 입력하기 ~
shell.SendKeys('%fo')    # Alt+F, O
time.sleep(0.1)

shell.SendKeys(path)
shell.SendKeys('{ENTER}')

 

윈도우 창 찾기
import win32gui

from ctypes import *
user32 = windll.user32

x, y = win32gui.FindWindow(None, "Some Dialog Box").GetWindowRect()[0:2]
user32.SetCursorPos(x + 100, y + 150)

 


아래는 내가 만든거~ 오토매크로

 


#-*-coding:utf-8

import win32com.client
import win32con
import win32gui
import time
from ctypes import *

i=0

while i < 30:
   
    time.sleep(90)
    old= win32gui.GetForegroundWindow()
    user32 = windll.user32
   

    shell = win32com.client.Dispatch("WScript.Shell")
    shell.AppActivate(u'창이름 ex) 이름없음- 메모장')
    x = win32gui.FindWindow(None, u'창이름 ex) 이름없음- 메모장')
    yy=win32gui.GetWindowRect(x)
    user32.SetCursorPos(yy[0]+945, yy[1]+685)
    time.sleep(1)
    user32.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    user32.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

    user32.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    user32.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

 

    time.sleep(1)
    win32gui.SetForegroundWindow(old)
    i=i+1