¿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.