pywinauto捕获图像添加不需要的边框

2024-09-24 22:20:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pywinauto获取特定窗口的屏幕截图。在

下面是我用来捕获记事本的代码(法语为“Bloc notes”):

from pywinauto import Application
app = Application().connect(title_re=".*Bloc-notes")
hwin = app.top_window()
hwin.set_focus()
img = hwin.capture_as_image()
img.save('notepad_screenshot.png')

结果如下:

screenshot

红色的“边框”是窗口的背景。我怎样才能安全地消除这个红色边界?

我试图配置windows10以不显示Windows阴影(在“视觉效果设置”中),但它对捕获的大小没有影响。在

当我精确地查看捕获时,我可以看到左、下和右边框有7个像素厚。我能可靠地删除这些像素吗?我所说的“可靠”的意思是:它会一直工作吗,在其他计算机上也能工作吗?在

感谢任何帮助。在


Tags: 代码fromimportappimg屏幕applicationconnect
1条回答
网友
1楼 · 发布于 2024-09-24 22:20:22

这是我找到的解决办法。在

import ctypes
from pywinauto import Application
import win32gui

app = Application().connect(title_re=".*Bloc-notes")
hwin = app.top_window()
hwin.set_focus()

window_title = hwin.window_text()
rect = ctypes.wintypes.RECT()
DWMWA_EXTENDED_FRAME_BOUNDS = 9
ctypes.windll.dwmapi.DwmGetWindowAttribute(
    ctypes.wintypes.HWND(win32gui.FindWindow(None, window_title)),
    ctypes.wintypes.DWORD(DWMWA_EXTENDED_FRAME_BOUNDS),
    ctypes.byref(rect),
    ctypes.sizeof(rect)
)

img = hwin.capture_as_image(rect)
img.save('notepad_screenshot_ok.png')

结果如下:

enter image description here

它在我运行的所有测试中都有效(不同的窗口)。在

相关问题 更多 >