python - win32gui MoveWindow() 未与屏幕左边缘对齐
问题描述
我正在使用win32gui
将记事本窗口移动到屏幕的原点 (0, 0),宽度和高度等于 500。结果是窗口没有移动到真正的左边框,而是 ~10 px。向右。宽度和高度也不等于 500 像素。(约 620 像素。相反)。
我正在使用以下代码来生成我的结果。
import win32gui
from PIL import ImageGrab
# Open notepad.exe manually.
hwnd = win32gui.FindWindow(None, "Untitled - Notepad")
win32gui.MoveWindow(hwnd, 0, 0, 500, 500, True)
bbox = win32gui.GetWindowRect(hwnd)
img = ImageGrab.grab(bbox)
解决方案
Windows 10 有一个 7 像素的不可见边框。(如果包括可见的 1 像素窗口边框,总计为 8 像素。)它是用于调整窗口大小的边框,位于窗口的左、右和底部边缘。
请注意调整大小光标如何与顶部边缘反应。那里没有看不见的边界。
一个简单的解决方法是仅抵消x
in MoveWindow
。
win32gui.MoveWindow(hwnd, -7, 0, 500, 500, True)
或者创建一个新功能来做到这一点:
def move_window(hwnd, x, y, n_width, n_height, b_repaint):
win32gui.MoveWindow(hwnd, x - 7, y, n_width, n_height, b_repaint)
推荐阅读
- java - 有没有办法从堆栈底部反转后半部分元素(使用递归)?
- javascript - java servlet从外部事件调用网页中的javascript弹出/模式对话框
- google-play - Google Play / Apple App Store 购买政策
- python - 基于来自 one-hot 编码列的多个条件的子集数据帧
- java - 为什么 java.util.Calendar 在 2021 年 2 月返回 31?
- python - 用 Try 节点替换 Python Call AST 节点
- sails.js - 使用sails.js 验证客户端证书
- python - Python计算未来50年的Timedelta,应该是同一天
- python - 当列数未知时,如何使用谷歌表格 API 选择数据范围?
- javascript - javascript中有没有办法在结果一致的情况下打乱数字?