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
后端。这正是我需要的!谢谢大家!@莱肯:嗨,答案解决了你的问题吗?请随时让我知道,如果你有任何问题,也接受它,如果它确实有帮助。