• python绑定游戏窗口模拟键盘鼠标操作方法64位32位通用


    python绑定游戏窗口模拟键盘鼠标操作方法
    工具
    python 64位和32位都可以
    引用模块
    import win32gui
    import win32api,win32con
    一、例子

    import win32gui
    import win32api,win32con
    hwnd = win32gui.FindWindow('MainWindow', None)  # 通过'MainWindow'窗口类名获取窗口句柄   类名可通过第三方软件获取窗口类名
    win32gui.SetActiveWindow(hwnd) #激活窗口
    rect=win32gui.GetWindowRect(hwnd)  #获取窗口坐标(左、右、宽,高)
    win32api.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, win32api.MAKELONG(x, y))  # 模拟鼠标按下(x,y)为坐标
    win32api.SendMessage(hwnd, win32con.WM_LBUTTONUP, 0, win32api.MAKELONG(x, y))  # 模拟鼠标释放(x,y)为坐标
    #win32api.SendMessage(hwnd, win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON, win32api.MAKELONG(x, y)) # 鼠标移动需要时使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、获取子窗口句柄如下:

    # win32gui.FindWindow(类名,标题) 获取父级窗口句柄
    Hand1 = win32gui.FindWindow('LDPlayerMainFrame','雷电模拟器(64)')
    print(Hand1)
    # win32gui.FindWindowEx(父级窗口句柄,None,类名,标题) 获取子级窗口句柄
    Hand2 = win32gui.FindWindowEx(Hand1,None,'RenderWindow', 'TheRender')
    print(Hand2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、使用win32gui发送消息

    def send_text(hwnd, text):
        win32gui.SendMessage(hwnd, win32con.WM_SETTEXT, None, text) #hwnd为窗口句柄,text为需要发送的文字内容
    
    • 1
    • 2

    四、向窗口中插入图片

    import win32clipboard, win32con, win32gui
    def set_clipboard_image(image_path):
        win32clipboard.OpenClipboard()
        win32clipboard.EmptyClipboard()
        image = Image.open(image_path)
        data = image.tobytes()
        bdata = bytes([0])
        formats = [win32clipboard.RegisterClipboardFormat('PNG')]
        win32clipboard.SetClipboardData(win32clipboard.CF_DIB, (bdata, data))
        win32clipboard.CloseClipboard()
    
    def insert_image(hwnd, x, y):
        win32api.SetForegroundWindow(hwnd)
        set_clipboard_image(image_path)
        lParam = win32api.MAKELONG(x, y)
        win32api.SendMessage(hwnd, win32con.WM_PASTE, None, None)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    其中,image_path代表要插入的图片路径,x和y代表图片的坐标。先使用Pillow库(Python图片处理库,需单独安装)读取待插入的图片,将其转换为字节数组,并将数据设置为剪贴板的内容。之后再使用SendMessage函数向指定窗口发送“粘贴”命令即可插入图片。

  • 相关阅读:
    LM小型可编程控制器软件(基于CoDeSys)笔记二十八:错误3803
    算法通关村第一关--链表青铜挑战笔记
    【树莓派】在没有显示屏的情况下通过WIFI连电脑
    Android WMS—— Surace管理 (二十)
    剑指 Offer 16. 数值的整数次方
    知识产权与标准化相关知识总结
    机器学习基础算法--回归类型和评价分析
    如何保证 HTTPS 证书的有效性?
    【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现
    86.Linux系统下复制进程fork(逻辑地址和物理地址)
  • 原文地址:https://blog.csdn.net/wg2627/article/details/133048440