如何找到要传递给screencapture -l的windowid?


26

命令行实用工具screencapture声称能够捕获单个窗口而无需交互,但是我不知道该传递什么。

-l<windowid> capture this windowsid

这不是应用程序的进程ID。

Answers:


22

对于某些应用程序,您可以使用AppleScript:

screencapture -l$(osascript -e 'tell app "Safari" to id of window 1') test.png

不过,它不适用于Chrome

如果运行,这些ID也会显示在Quartz Debug中(可从developer.apple.com/downloads获取defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true


1
不幸的是,这不适用于非Applescriptable应用程序,例如Eclipse或Google Chrome。
CajunLuke

是啊,我的目标应用程序是不是Applescriptable :(但是谢谢你的好意。
加雷斯·辛普森

2
请注意,即使在可编写脚本的应用程序中,也不保证窗口ID对应于Quartz窗口ID。
克里斯·佩奇

Quartz调试似乎不再存在,或者它已被重命名或捆绑了?
gman

Quartz Debug包含在developer.apple.com/download/more上的 “ Xcode附加工具”中。
尼古拉斯·赖利

9

我写了一个小的命令行实用程序来检索不支持AppleScript的应用程序的窗口ID。在这里获取:https : //github.com/smokris/GetWindowID

然后,您可以通过指定特定的窗口包名称和窗口标题来捕获该窗口:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png

嗨,我正在尝试使用它,但是我不确定自己在做什么。我已经下载了Makefile,GetWindowID.m。但是,当我启动命令./GetWindowID.m时,它给了我这个错误:./ GetWindowID.m:第4行:意外令牌附近的语法错误(' ./GetWindowID.m: line 4: int main(int argc,char ** argv)'
KingBOB

1
@Giorgio:打开“终端”窗口,然后切换到包含Makefile和的文件夹GetWindowID.m,然后运行命令make。它将生成一个名为的二进制文件GetWindowID,您可以使用我在答案中描述的命令来调用该二进制文件。
smokris 2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.