远程桌面截图
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_00bc0e74/desktop-screenshot。
技能介绍
它解决什么问题
在 PowerShell 里截一张“真实尺寸”的桌面图,看起来只是几行脚本的事,实际踩坑率很高。显示器开了 125%/150% 缩放时,Screen.Bounds 返回的是逻辑尺寸,截图往往比物理分辨率小(比如拿到 2048×1152 而不是 2560×1440),右下角直接被裁掉。环境里如果存在 ACC_PRODUCT_CONFIG_V3 这类超大变量,Add-Type 编译子进程时会直接报“用于启动进程的环境块不能多于 65535 个字节”。Bitmap 构造偶尔抛“参数无效”,根因往往是传入的尺寸计算结果是 Object[],没有显式转成 [int]。这个技能把这些修复固化成一条可复用的流程。
核心能力
- 多显示器拼接:汇集所有显示器的边界,合成一张全景 PNG,而不是只截主屏
- DPI 感知:截图前调用
SetProcessDpiAwareness(2),确保拿到的是物理像素而非缩放后的逻辑尺寸 - 环境变量清理:脚本开头清掉超过 4000 字节的变量,规避 64KB 进程环境块上限
- 参数化输出:
screenshot.ps1支持-OutputPath,默认输出当前目录的desktop-screenshot.png
工作流程
- 执行截图脚本:把技能目录(默认
~/.workbuddy/skills/desktop-screenshot)和当前工作区的绝对路径填进脚本,运行后生成 PNG - 展示给用户:用
present_files把图片发过去;也可以先用 Read 读一遍确认内容无误再发
触发方式很直白:用户说“截个桌面”“截屏发我”“抓个屏”“帮我截个图”这类任意表述时自动触发。
注意点
- 清理超大变量必须在同一个脚本内完成。在外层 PowerShell 里改
$env:PATH没有用,因为Add-Type的子进程继承的是整个进程环境块,不是单个变量 - 所有传给 Bitmap 的尺寸都要显式
[int]强转,否则Object[]会让构造函数报错 - 调用时建议显式传工作区路径,保证截图落在用户能看见的目录里
- 技术环境千差万别,脚本默认路径按
~/.workbuddy/skills/desktop-screenshot组织,换目录时要同步替换
使用场景
- 开发环境配了 125% 缩放,截图总是小于物理分辨率,需要得到真实像素的桌面图
- 工位上接了两台显示器,要一张拼接全景图发给同事排查 UI 问题
- 机器里有超大环境变量导致 Add-Type 报错,需要先清理再截图
- 远程排障时让对方发来当前桌面截图,确认实际显示状态
适合人员
- Windows 桌面运维工程师,需要批量采集客户端真实桌面截图用于故障定界
- 多屏开发环境用户,需要快速生成拼接全景图并分享给协作同事
- 安全测试人员,需要在沙箱或远程会话中留存当前桌面状态作为取证记录
- AI 智能体开发者,需要给 Agent 添加可靠的桌面截屏能力以完成多步骤任务