Python win32gui MoveWindow()不与真左对齐

时间:2018-08-05 13:46:30

标签: python python-imaging-library pywin32 win32gui

我正在使用win32gui将“记事本”窗口移动到宽度和高度等于500的屏幕原点(0,0)。结果是该窗口没有移动到真正的左边界,而是〜10像素。在右边。宽度和高度也不等于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)

以下是屏幕在屏幕上的总体位置的屏幕截图:
enter image description here

下面是img的图片: enter image description here

1 个答案:

答案 0 :(得分:2)

Windows 10具有7个像素的不可见边框。 (如果包括可见的1像素窗口边框,则总计为8像素。)这是调整窗口大小的边框,位于窗口的左,右和下边缘。

注意调整大小的光标如何与顶部边缘反应。那里没有看不见的边框。

一个简单的解决方法是只偏移x中的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)