Agent Skills
返回列表
🎨

窗口静默截图

设计多媒体 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_b22a52ba/window-capture。

技能介绍

绕过遮挡的窗口截图难题

在桌面自动化场景中,截取特定窗口时经常会遇到遮挡问题。如果目标窗口被其他窗口部分或完全覆盖,常规的屏幕区域截取(如 ImageGrab.grab)只能拿到包含遮挡物的画面,无法还原目标窗口的真实UI状态。传统方案往往需要先将目标窗口置顶或最小化遮挡物,但这会破坏用户当前的前台焦点和工作流。

静默截图的工作原理

该技能通过 scripts/stealth_capture.py 提供了一套静默截取方案,核心在于“临时隐藏与恢复”。其工作流程如下:

  • 枚举与查找:利用 EnumWindows 获取所有可见窗口的句柄及坐标,通过 find_window 或 find_active_window 精准定位目标。
  • 区域重叠检测:计算与目标窗口区域重叠的其他窗口列表。
  • 临时隐藏:调用 ShowWindow(hwnd, SW_HIDE) 将遮挡窗口临时隐藏。
  • 合成与截取:等待 100ms 让 DWM 桌面窗口管理器完成刷新,随后截取纯净的目标区域。
  • 状态恢复:立即恢复被隐藏的窗口,整个过程耗时约 150ms。

适用边界与注意事项

  • 平台限制:依赖 Windows API 与 DWM,仅限 Windows 平台使用。
  • 视觉闪烁:遮挡窗口被短暂隐藏,用户可能会察觉到约 150ms 的闪烁。
  • 焦点不变:截取过程不会激活目标窗口,也不改变当前前台焦点。
  • 最小化限制:无法截取已最小化的窗口,脚本会抛出错误提示。旧版 scripts/capture_window.py 作为回退方案保留,但通常不推荐使用。

使用场景

  • 排查桌面应用显示异常时,截取被工具栏遮挡的主窗口界面。
  • 对客服坐席系统进行巡检,静默截取当前前台窗口的实时状态。
  • 录制多窗口软件操作视频时,确保目标窗口画面无其他窗口遮挡。
  • 自动化测试中,获取特定对话框在弹窗覆盖前的实际渲染图像。

适合人员

  • 桌面端测试工程师,需要截取被弹窗遮挡的应用界面进行缺陷复现。
  • Windows 桌面软件开发者,调试多窗口重叠时的 UI 渲染与合成逻辑。
  • 自动化脚本编写者,需要静默获取特定窗口状态而不打断用户前台操作。
  • UI/UX 设计师,分析竞品软件在不同窗口层级下的实际视觉表现。