Python windows脚本操作

windows操作

目前很多流行的脚本工具(例如:按键精灵)都是模拟鼠标键盘操作实现一些简单的操作,比如重复点击一个地方,或者重复实现几个按键按下等,截取相应窗口界面保存。
Python 要实现操作鼠标和键盘需要pywin32库支持。

简单实现

pywin32

如果要了解更多功能,请查看pywin32技术文档。

import time
import win32gui, win32ui, win32con, win32api

def window_capture(filename):
    """
    函数功能:截屏
    """
    hwnd = 0 # 窗口的编号,0号表示当前活跃窗口
    # 根据窗口句柄获取窗口的设备上下文DC(Divice Context)
    hwndDC = win32gui.GetWindowDC(hwnd)
    # 根据窗口的DC获取mfcDC
    mfcDC = win32ui.CreateDCFromHandle(hwndDC)
    # mfcDC创建可兼容的DC
    saveDC = mfcDC.CreateCompatibleDC()
    # 创建bigmap准备保存图片
    saveBitMap = win32ui.CreateBitmap()
    # 获取监控器信息
    MoniterDev = win32api.EnumDisplayMonitors(None, None)
    w = MoniterDev[0][2][2]
    h = MoniterDev[0][2][3]
    # print w,h   #图片大小
    # 为bitmap开辟空间
    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
    # 高度saveDC,将截图保存到saveBitmap中
    saveDC.SelectObject(saveBitMap)
    # 截取从左上角(0,0)长宽为(w,h)的图片,存储空间,图片偏移量,win32操作
    saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)
    saveBitMap.SaveBitmapFile(saveDC, filename)


def move(x, y):
    """
    函数功能:移动鼠标到指定位置
    参    数:x:x坐标
              y:y坐标
    """
    win32api.SetCursorPos((x, y))


def get_cur_pos():
    """
    函数功能:获取当前鼠标坐标
    """
    p={
    
    "x":0,"y":0}
    pos = win32gui.GetCursorPos()
    p['x']=pos[0]
    p['y']=pos[1]
    return p


def left_click():
    """
    函数功能:鼠标左键点击
    """
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)


def right_click():
    """
    函数功能:鼠标右键点击
    """
    win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN | win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)


def left_down():
    """
    函数功能:鼠标左键按下
    """
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)


def left_up():
    """
    函数功能:鼠标左键抬起
    """
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)


def right_down():
    """
    函数功能:鼠标右键按下
    """
    win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)


def right_up():
    """
    函数功能:鼠标右键抬起
    """
    win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)

hwnd_title = dict()
def get_all_hwnd(hwnd,mouse):
    """
    函数功能:获取所有窗口句柄
    """
    if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
        hwnd_title.update({
    
    hwnd:win32gui.GetWindowText(hwnd)})

if __name__ == "__main__":
    win32gui.EnumWindows(get_all_hwnd, 0)
    for h,t in hwnd_title.items():
        if t is not "":
            print(h, t)
    window_capture("test.jpg")
    while 1:
        p = get_cur_pos()
        print(p)

PyUserInput

需要PyUserInput库支持。

# pip install PyUserInput
from pykeyboard import *
from pymouse import *

# 模拟键盘输入
k = PyKeyboard()
k.type_string('123456')
k.tap_key('a')

# 模拟键盘移动和点击
m = PyMouse()
m.move(0,0)
for i in range(1920):
    for j in range (1080):
        m.move(i,j)
m.click(1900,10,1,1)

猜你喜欢

转载自blog.csdn.net/youngdianfeng/article/details/106114765