簡體   English   中英

Python win32api 無法在 Windows 油漆應用程序上繪圖

[英]Python win32api cannot draw on Windows Paint Application

我想用類似的 function 編寫代碼

# 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 是一個很棒的工具,但它需要程序在前台運行。 無論如何要編寫具有類似能力並在后台運行的代碼? 我試過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)) 

但它在 Paint 應用程序中沒有繪制任何內容。

如果要發送繪圖消息,應找到 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)) 

它對我有用:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM