使用Python后台脚本捕获屏幕截图并保存到文档

问题描述 投票:0回答:2

我正在做一些测试活动,这需要我捕获应用程序/数据库等的屏幕截图并将其保存到文档中。整个活动有超过50张截图。 Python 有没有一种方法可以使用 Windows 快捷键(例如 CTRL ALT Shift C)截取屏幕截图并将图像附加到文档文件中。我相信python程序应该像Unix中的nohup一样在后台运行。

python screenshot
2个回答
2
投票

要使用热键在 Word 中存储屏幕截图,您可以使用库的组合。

  • 使用win32gui打开Word
  • 使用python-docx更新文档并保存
  • 使用 PyAutoGUI 进行屏幕捕获
  • 使用键盘监听热键

要使此脚本正常工作,您需要在运行脚本之前创建 Word 文档。

# Need these libraries
# pip install keyboard
# pip install PyAutoGUI
# pip install python-docx
# pip install win32gui

import keyboard
import pyautogui
from docx import Document
from docx.shared import Inches
import win32gui
from PIL import ImageGrab

shotfile = "C:/tmp/shot.png"  # temporary image storage 
docxfile = "C:/tmp/shots.docx" # main document
hotkey = 'ctrl+shift+q'  # use this combination anytime while script is running

def do_cap():
    try:
        print ('Storing capture...')
        
        hwnd = win32gui.GetForegroundWindow()  # active window
        bbox = win32gui.GetWindowRect(hwnd)  # bounding rectangle

        # capture screen
        shot = pyautogui.screenshot(region=bbox) # take screenshot, active app
        # shot = pyautogui.screenshot() # take screenshot full screen
        shot.save(shotfile) # save screenshot
        
        # append to document. Doc must exist.
        doc = Document(docxfile) # open document
        doc.add_picture(shotfile, width=Inches(7))  # add image, 7 inches wide
        doc.save(docxfile)  # update document
        print ('Done capture.')
    except Exception as e:  # allow program to keep running
        print("Capture Error:", e)

keyboard.add_hotkey(hotkey, do_cap)  # set hot keys

print("Started. Waiting for", hotkey)

keyboard.wait()   # Block forever

0
投票

只要进行一些小的更改,上面的代码就可以工作。 感谢您提供上面的代码。然而,面临一些挑战,整理了一些东西,下面的代码工作得很好。屏幕截图带有时间戳。

全屏截取带有时间戳的屏幕截图

shot = pyautogui.screenshot() # 带时间戳的全屏截图

附加到文档。文档必须存在。

    docxfile = r'C:\tmp\shots.docx' # main document ADDED THIS STATEMENT

只有使用该代码添加或更改的上述语句才能完美运行。

© www.soinside.com 2019 - 2024. All rights reserved.