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
张小明
前端开发工程师
智能体项目管理:从理论到实践的系统性指南
智能体项目管理:从理论到实践的系统性指南 【免费下载链接】hello-agents 📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程 项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents (文章内容...) …
改图能力强AI软件怎么判断?我用一次“被反复改需求”的项目,把答案跑出来了
如果你在搜 改图能力强AI软件,我想先泼一盆冷水:绝大多数 AI 生图软件,根本没认真考虑过“改图”这件事。它们解决的是“第一次生成”, 但现实工作里,真正消耗时间的,是 第二次、第三次、第四次修改。而我之…
阿里云大模型课程学习笔记1-大模型基础知识
熟悉我的朋友可能知道我主业是做大数据平台的Java工程师,我公众号主要分享的是AI资讯,测评,产品等方面的信息,附带也有一些出海文章和个人感想,读书笔记等。主要还是AI相关的内容,但是我从来没有自己去构建…
PostgreSQL vs MongoDB — 企业级架构选型终极指南
一句话先结论: PostgreSQL 管 钱与关系(强一致事务 & 复杂查询) MongoDB 管 内容与规模(动态结构 & 海量写入) 最常见、最稳的企业架构是 混合使用,而不是二选一 🧭 一、为什么每一家公司都必须做“数据库选型”? 现代系统不再只是存结构化数据。 真实场景往…
Folo终极指南:掌握AI信息聚合的完整教程
Folo终极指南:掌握AI信息聚合的完整教程 【免费下载链接】follow [WIP] Next generation information browser 项目地址: https://gitcode.com/GitHub_Trending/fol/follow 在信息爆炸的时代,你是否经常感到被海量内容淹没?每天在不同…
Keil uVision5使用教程:基于STM32的项目创建实战案例
从零开始搭建STM32工程:Keil uVision5实战手记 你有没有过这样的经历?打开Keil uVision5,面对一片空白的项目窗口,鼠标悬在“New Project”上迟迟不敢点下——心里发虚:接下来该选什么芯片?启动文件要不要自…