import win32gui import win32ui import win32con import win32api from PIL import Image import time from ctypes import windll def capture_window_by_title(window_title, output_path="window_capture.png"): """ 根据窗口标题截取指定窗口内容,无需激活窗口 Args: window_title: 窗口标题(部分匹配) output_path: 输出图片路径 """ # 查找窗口句柄 def enum_windows_callback(hwnd, windows): if win32gui.IsWindowVisible(hwnd): window_text = win32gui.GetWindowText(hwnd) if window_title.lower() in window_text.lower(): windows.append(hwnd) return True windows = [] win32gui.EnumWindows(enum_windows_callback, windows) if not windows: print(f"未找到包含 '{window_title}' 的窗口") return None # 选择第一个匹配的窗口 hwnd = windows[0] # 获取窗口位置和大小 left, top, right, bottom = win32gui.GetWindowRect(hwnd) width = right - left height = bottom - top # 获取设备上下文 hwndDC = win32gui.GetWindowDC(hwnd) mfcDC = win32ui.CreateDCFromHandle(hwndDC) saveDC = mfcDC.CreateCompatibleDC() # 创建位图 saveBitMap = win32ui.CreateBitmap() saveBitMap.CreateCompatibleBitmap(mfcDC, width, height) saveDC.SelectObject(saveBitMap) # 使用 PrintWindow API 截取窗口 result = windll.user32.PrintWindow(hwnd, saveDC.GetSafeHdc(), 3) if result: # 转换为PIL图像 bmpinfo = saveBitMap.GetInfo() bmpstr = saveBitMap.GetBitmapBits(True) im = Image.frombuffer( 'RGB', (bmpinfo['bmWidth'], bmpinfo['bmHeight']), bmpstr, 'raw', 'BGRX', 0, 1) im.save(output_path) print(f"窗口截图已保存到: {output_path}") # 清理资源 win32gui.DeleteObject(saveBitMap.GetHandle()) saveDC.DeleteDC() mfcDC.DeleteDC() win32gui.ReleaseDC(hwnd, hwndDC) return output_path if result else None # 使用示例 if __name__ == "__main__": # 截取Edge浏览器窗口 capture_window_by_title("Edge", "edge_capture.png")在最小化浏览器的情况下给浏览器截图 python
张小明
前端开发工程师
闽南美食文化推广微信小程序设计与实现开题报告
学号姓名指导教师题目闽南美食文化推广微信小程序设计与实现课题内容:(研究现状、目标、意义等,空白不足可增加页面)研究现状:闽南美食文化源远流长,丰富多彩,是地方特色文化的重要组成部分。然…
开题报告不是“填空题”,而是一张研究蓝图——用对工具,第一次写也能逻辑自洽
“开题报告怎么写?” 这是我作为教育科普博主收到最多的问题之一。 很多同学把开题当成“走流程”:随便找个题目,套个模板,拼几段话交差。结果开题被导师连问三遍:“你的研究问题到底是什么?”“文献支撑在…
【保姆级教程】零基础微调大模型:Python实现+免费GPU+本地部署!
简介 本文详细介绍使用Python微调大模型的全流程,利用Unsloth工具和Google Colab免费GPU资源,从数据收集、模型加载、LoRA适配器添加到训练,最终通过Ollama实现本地部署。以HTML信息提取为例,提供完整代码和最佳实践,…
Android不安全银行v2:移动安全测试实战指南
Android不安全银行v2(InsecureBankv2)是一个专门为移动安全学习设计的开源项目,它模拟了一个存在多种安全问题的银行应用程序。通过实际操作这个项目,开发者和安全研究人员可以深入了解Android应用中常见的风险类型、分析方法以及…
闽南美食文化推广微信小程序设计与实现开题报告(3)
学号姓名指导教师题目闽南美食文化推广微信小程序设计与实现课题内容:(研究现状、目标、意义等,空白不足可增加页面)研究现状:闽南美食文化源远流长,丰富多彩,是地方特色文化的重要组成部分。然…
从存档困境到游戏自由:ER-Save-Editor的智能解救之道
当你因误删关键道具而陷入重玩数十小时的绝望,当角色属性加点失误让你在Boss战前寸步难行,《艾尔登法环》的存档系统似乎成了无法逾越的障碍。但一款名为ER-Save-Editor的工具正悄然改变这一局面,让每位玩家都能重新掌控自己的游戏命运。 【免…