用Python捕获窗口

用Python捕获窗口,python,opencv,screenshot,Python,Opencv,Screenshot,我目前正在寻找一个模块或代码,可以让我捕获另一个进程窗口 我尝试过使用ImageGrab,但是它只捕获屏幕的一个区域,而不是绑定到特定的进程窗口。由于我使用的是一个小型显示器,我无法保证屏幕上的捕获区域不会出现重叠,因此遗憾的是ImageGrab解决方案不够好。您可以使用win32gui实现这一点 from PIL import ImageGrab import win32gui hwnd = win32gui.FindWindow(None, r'Window_Title') win32gu

我目前正在寻找一个模块或代码,可以让我捕获另一个进程窗口


我尝试过使用ImageGrab,但是它只捕获屏幕的一个区域,而不是绑定到特定的进程窗口。由于我使用的是一个小型显示器,我无法保证屏幕上的捕获区域不会出现重叠,因此遗憾的是ImageGrab解决方案不够好。

您可以使用
win32gui
实现这一点

from PIL import ImageGrab
import win32gui

hwnd = win32gui.FindWindow(None, r'Window_Title')
win32gui.SetForegroundWindow(hwnd)
dimensions = win32gui.GetWindowRect(hwnd)

image = ImageGrab.grab(dimensions)
image.show()
如果出现小屏幕问题,也可以将窗口移动到首选位置。
win32gui.MoveWindow(hwnd,0,0,500,700,True)

请参见

我认为此解决方案不起作用,如果该窗口意外滚动或处于非活动状态,它将不再位于捕获空间中。我不知道是否有任何此类模块会绑定到特定窗口。可能您可以在捕获之前尝试使用
SetForegroundWindow()
。该程序可能会每秒捕获几次,这是不可行的,尤其是当该程序需要捕获多个窗口时。