使用 Python 通过句柄截图并保存

在这个教程中,我们将学习如何使用 Python 通过窗口句柄来截图并保存。这对许多应用场景来说是非常有用的,比如自动化测试、监控程序状态等。接下来,我们将按照如下步骤进行:

步骤 描述
1 安装所需的库
2 获取窗口句柄
3 截图并保存
4 测试程序

步骤 1:安装所需的库

在这个项目中,我们将使用 pyautoguiPillow 库来实现截图功能,并使用 pygetwindow 获取窗口句柄。你可以使用下面的命令安装这些库:

pip install pyautogui Pillow pygetwindow

解释:

  • pyautogui:用于自动化GUI操作,包括截图。
  • Pillow:用于处理图片数据。
  • pygetwindow:帮助获取窗口句柄信息。

步骤 2:获取窗口句柄

在这一部分,我们将使用 pygetwindow 库来获取目标窗口的句柄。以下是获取窗口句柄的代码示例:

import pygetwindow as gw

# 获取所有打开窗口的列表
windows = gw.getAllTitles()
print(windows)  # 打印所有窗口标题

# 选择目标窗口
target_window_title = '计算器'  # 这里可以换成你要截图的窗口名
target_window = gw.getWindowsWithTitle(target_window_title)

if target_window:
    hwnd = target_window[0]._hWnd  # 获取窗口句柄
    print(f'目标窗口句柄: {hwnd}')  # 打印窗口句柄
else:
    print('未找到目标窗口')

解释:

  • gw.getAllTitles():获取所有窗口的标题。
  • gw.getWindowsWithTitle(target_window_title):根据窗口标题查找窗口,返回窗口对象列表。
  • hwnd = target_window[0]._hWnd:获取目标窗口的句柄。

步骤 3:截图并保存

现在我们已经有了窗口句柄,可以进行截图操作。以下是实现截图并保存的代码示例:

import pyautogui
import time

# 确保目标窗口在最上面
if target_window:
    target_window[0].activate()  # 激活窗口
    time.sleep(1)  # 等待窗口激活
    
    # 截取整个屏幕
    screenshot = pyautogui.screenshot()
    
    # 保存图片
    screenshot.save('screenshot.png')
    print('截图已保存为 screenshot.png')
else:
    print('无法激活窗口,无法截图')

解释:

  • target_window[0].activate():激活目标窗口,以确保我们捕捉到的内容是它的状态。
  • time.sleep(1):等待一秒,以确保窗口完全激活。
  • pyautogui.screenshot():截取整个屏幕。
  • screenshot.save('screenshot.png'):将截图保存为一个 PNG 文件。

步骤 4:测试程序

完成所有代码后,你可以将完整代码放在 Python 环境中进行测试。在测试之前,确保你调整了目标窗口的标题为你想要截图的窗口。

完整代码示例

import pygetwindow as gw
import pyautogui
import time

# 获取窗口句柄
windows = gw.getAllTitles()
print(windows)

target_window_title = '计算器'  # 替换为目标窗口标题
target_window = gw.getWindowsWithTitle(target_window_title)

if target_window:
    hwnd = target_window[0]._hWnd  
    print(f'目标窗口句柄: {hwnd}')

    target_window[0].activate()
    time.sleep(1)

    screenshot = pyautogui.screenshot()
    screenshot.save('screenshot.png')
    print('截图已保存为 screenshot.png')
else:
    print('未找到目标窗口')

结尾

通过上述步骤,我们成功地使用 Python 实现了通过窗口句柄截图并保存的功能。你可以根据需要调整代码,以实现更复杂的截图逻辑。希望这个教程对你有所帮助,积极实践,祝你编程顺利!