Python win32api无法在Windows绘制应用程序上绘制

Python win32api无法在Windows绘制应用程序上绘制,python,winapi,pyautogui,win32gui,Python,Winapi,Pyautogui,Win32gui,我想写一个函数与 #源代码https://codeloop.org/python-automation-drawing-in-paint-application/ 导入pyautogui,时间 时间。睡眠(2) pyautogui.click() 距离=200 当距离>0时: pyautogui.dragRel(距离,0,持续时间=0.2)#向右移动 距离=距离-5 pyautogui.dragRel(0,距离,持续时间=0.2)#向下移动 pyautogui.dragRel(-distance

我想写一个函数与

#源代码https://codeloop.org/python-automation-drawing-in-paint-application/
导入pyautogui,时间
时间。睡眠(2)
pyautogui.click()
距离=200
当距离>0时:
pyautogui.dragRel(距离,0,持续时间=0.2)#向右移动
距离=距离-5
pyautogui.dragRel(0,距离,持续时间=0.2)#向下移动
pyautogui.dragRel(-distance,0,duration=0.2)#向左移动
距离=距离-5
pyautogui.dragRel(0,-距离,持续时间=0.2)#向上移动
它绘制了以下图像

PyautoGui是一个很棒的工具,但它需要程序运行前台。有没有编写一个具有类似能力的代码并在后台运行?我尝试了
win32api

import win32gui
hwndMain = win32gui.FindWindow(None, "Untittled - Paint")
win32gui.SendMessage(hwnd, win32con.WM_LBUTTONDOWN, 1, make_long(500, 500))
win32gui.SendMessage(hwnd, win32con.WM_MOUSEMOVE, 1, make_long(000, 400))
win32gui.SendMessage(hwnd, win32con.WM_LBUTTONUP, 1, make_long(900, 900)) 

但它在绘图应用程序中不绘制任何内容。

如果要发送绘图消息,应找到MsPaint的子窗口,而不是直接将其发送到MsPaint

这是一个示例,您可以参考它:

import win32gui
import win32con
import win32api
def findMSPaintDrawWindow():
    res = win32gui.FindWindow(None, "Untitled - Paint");
    if(res != None):
        res = win32gui.FindWindowEx(res, None, "MSPaintView", None);
        if(res != None):
            res = win32gui.FindWindowEx(res, None, None, None)
    return res;


hwndMain = findMSPaintDrawWindow()

win32gui.SendMessage(hwndMain, win32con.WM_LBUTTONDOWN, 1, win32api.MAKELONG(500, 500))
win32gui.SendMessage(hwndMain, win32con.WM_MOUSEMOVE, 1, win32api.MAKELONG(000, 400))
win32gui.SendMessage(hwndMain, win32con.WM_LBUTTONUP, 1, win32api.MAKELONG(900, 900)) 
这对我很有用:


pywinauto不要求目标应用程序是前台应用程序,只要您选择
uia
后端。这正是我需要的!谢谢大家!@莱肯:嗨,答案解决了你的问题吗?请随时让我知道,如果你有任何问题,也接受它,如果它确实有帮助。