¿Cómo encuentro el windowid para pasar a screencapture -l?


26

La captura de pantalla de la utilidad de línea de comandos afirma ser capaz de capturar una sola ventana sin requerir interacción, pero no puedo entender qué pasar.

-l<windowid> capture this windowsid

No es la identificación del proceso de la aplicación.

Respuestas:


22

Para algunas aplicaciones puede usar AppleScript:

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

Sin embargo, no funciona con Chrome .

Los ID también se muestran en Quartz Debug (disponible en developer.apple.com/downloads ) si ejecuta defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.


1
Desafortunadamente, esto no funciona con aplicaciones que no sean Applescriptables como Eclipse o Google Chrome.
CajunLuke

Sí, mi aplicación de destino no es Applescriptable :( Pero gracias de todos modos.
Gareth Simpson

2
Tenga en cuenta que no se garantiza que los identificadores de ventana se correspondan con el identificador de ventana de Quartz, incluso en aplicaciones que son programables.
Chris Page

¿Parece que la depuración de cuarzo ya no existe o se ha renombrado o incluido?
Gman

Quartz Debug se incluye en "Herramientas adicionales para Xcode" disponible en developer.apple.com/download/more .
Nicholas Riley

9

Escribí una pequeña utilidad de línea de comandos para recuperar la ID de ventana para aplicaciones que no son compatibles con AppleScript. Consíguelo aquí: https://github.com/smokris/GetWindowID

Luego puede capturar una ventana específica especificando el nombre del paquete y el título de la ventana:

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

Hola, estoy tratando de usarlo pero no estoy seguro de lo que estoy haciendo. He descargado el Makefile, GetWindowID.m. Pero cuando ejecuto el comando ./GetWindowID.m me da este error: ./ GetWindowID.m: línea 4: error de sintaxis cerca de token inesperado (' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
KingBOB

1
@Giorgio: abra una ventana de Terminal y cambie a la carpeta que contiene Makefiley GetWindowID.mluego ejecute el comando make. Producirá un binario llamado GetWindowID, que luego puede invocar usando el comando que describí en mi respuesta.
smokris

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.