Python win32api 无法在 Windows Paint Application 上绘图
Python win32api cannot draw on Windows Paint Application
我想写一个功能与
类似的代码
# code from https://codeloop.org/python-automation-drawing-in-paint-application/
import pyautogui, time
time.sleep(2)
pyautogui.click()
distance = 200
while distance > 0:
pyautogui.dragRel(distance, 0, duration=0.2) # move right
distance = distance - 5
pyautogui.dragRel(0, distance, duration=0.2) # move down
pyautogui.dragRel(-distance, 0, duration=0.2) #move left
distance = distance - 5
pyautogui.dragRel(0, -distance, duration=0.2) #move up
其中绘制了以下图像
PyautoGui 是一个很棒的工具,但是它需要程序在运行 前台。有没有办法在后台编写具有类似能力和 运行s 的代码?我试过 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 的子 window,而不是直接发送给 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))
它对我有用:
我想写一个功能与
类似的代码# code from https://codeloop.org/python-automation-drawing-in-paint-application/
import pyautogui, time
time.sleep(2)
pyautogui.click()
distance = 200
while distance > 0:
pyautogui.dragRel(distance, 0, duration=0.2) # move right
distance = distance - 5
pyautogui.dragRel(0, distance, duration=0.2) # move down
pyautogui.dragRel(-distance, 0, duration=0.2) #move left
distance = distance - 5
pyautogui.dragRel(0, -distance, duration=0.2) #move up
其中绘制了以下图像
PyautoGui 是一个很棒的工具,但是它需要程序在运行 前台。有没有办法在后台编写具有类似能力和 运行s 的代码?我试过 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 的子 window,而不是直接发送给 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))
它对我有用: