• 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函数向指定窗口发送“粘贴”命令即可插入图片。

  • 相关阅读:
    flume异常关闭文件修复方法
    「Kafka」Kafka理论知识解读(一)
    IO模型复习
    05-React Antd UI库
    微服务技术栈SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式(四):消息队列MQ
    k8s集群换ip
    Word控件Spire.Doc 【页面设置】教程(1):在C#/VB.NET:在 Word 文档中插入分页符
    矩阵分析与应用+张贤达
    树莓派系统文件解析
    对这6年的测试经历做个总结
  • 原文地址:https://blog.csdn.net/wg2627/article/details/133048440