windows模拟鼠标点击相应按键(可后台运行)

import win32gui
import win32api
import win32con
import time


def LeftClick():
    # FindWindow(类名, 窗口名)
    handle0 = win32gui.FindWindow(None, "SenseRover Mini刷机工具")
    # 将窗口从任务栏处显示出来,句柄是父级窗口,需要每次都最小化到任务栏才可进行下一次
    # win32gui.ShowWindow(handle0, win32con.SW_RESTORE)
    # 强制将窗口调到最前
    win32gui.SetForegroundWindow(handle0)

    # 激活父级窗口,其实是可以省略这一步的,SetForgroundWindow(HWND hwnd)就有激活的作用
    win32gui.SetActiveWindow(handle0)
    # 我也不明白在此处用BM_CLICK、为什么不可以单击,必须要用mouse_event
    """
    handle1 = win32gui.FindWindowEx(handle0, None, None, None)
    #win32gui.SendMessage(win32gui.FindWindowEx(handle1, None, None, None), win32con.BM_CLICK, 0, 0)
    win32gui.SendMessage(win32gui.FindWindowEx(handle1, None, None, None), win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, (25 << 16 | 26))
    win32gui.SendMessage(win32gui.FindWindowEx(handle1, None, None, None), win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, (25<<16|26))
    """
    # 设置鼠标位置
    win32api.SetCursorPos([526, 301])
    # 鼠标左键down|up,x偏移量,y偏移量(鼠标左键单击)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN|win32con.MOUSEEVENTF_LEFTUP, 0, 0)

    time.sleep(30)

    # FindWindowEx(父柄,None,None,None)寻找父柄之后的第一个子柄
    # 此处用BM_CLICK没问题
    handle2 = win32gui.FindWindowEx(win32gui.FindWindow(None, "提示"), None, None, None)
    win32gui.SendMessage(handle2, win32con.BM_CLICK, 0, 0)
    # 尝试使用LBUTTONDOWN/UP也可以实现单击,(22<<16|34)是按键中间相对于按键左上角的坐标,34是x,22是y
    # win32gui.SendMessage(handle2, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, (22<<16|34))
    # win32gui.SendMessage(handle2, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, (22<<16|34))


for i in range(10000):
    print("开始第%d次烧录" % (i+1))
    LeftClick()
    print("第%d次烧录完成" % (i+1))




你可能感兴趣的:(windows模拟鼠标点击相应按键(可后台运行))