最可靠方案是applescript辅助+screencapture:先用osascript激活目标应用窗口,再立即执行screencapture -w -o截图;直接用screencapture -w手动选窗次之;而-l配合pgrep因pid与cgwindowid不等价,易黑屏或报错,慎用。

要在Mac终端中精准捕获某个特定应用窗口的截图,不能依赖图形界面快捷键,必须借助命令行工具screencapture——它是macOS原生内置、无需安装的可靠方案,且支持按窗口ID或名称精确匹配。
用screencapture命令按窗口标题截图
打开终端,输入以下命令:
screencapture -w -o -t png ~/Desktop/window.png
这会弹出一个带阴影的窗口选择器,鼠标悬停到目标窗口上再点击,截图立即保存为PNG格式到桌面。-w参数强制进入窗口模式,-o关闭窗口阴影(可选),【不加-w则无法触发窗口选择,会直接截全屏】。
用screencapture按进程名自动截图
若目标窗口始终前台运行(如Safari、Notes),可用pidof或pgrep获取进程ID后截图:
第一步:查进程PID → pgrep -f "Safari"
第二步:用PID截图 → screencapture -l $(pgrep -f "Safari") -t jpg ~/Desktop/safari-win.jpg
-l参数指定窗口层ID,但实际需传入的是该进程最顶层窗口的CGWindowID,而pgrep只返回PID——所以此方法仅在窗口独占且无遮挡时稳定生效;【多数情况下会截成黑屏或报错,慎用】。
用AppleScript辅助定位并截图
这是最可靠的自动化方式,绕过PID不确定性,直接按窗口标题字符串匹配:
方法一:终端一行执行
osascript -e 'tell application "System Events" to tell application process "Preview" to set frontmost to true' -e 'delay 0.2' -e 'do shell script "screencapture -w -o ~/Desktop/preview-window.png"'
方法二:先激活窗口再截图(推荐)
① 在终端中运行:osascript -e 'activate application "Finder"'
② 立即执行:screencapture -w -o ~/Desktop/finder-window.png
注意:窗口必须已打开且未最小化,否则AppleScript无法激活;两次命令间不能有长停顿,否则窗口可能被其他程序抢占前台。











