Come trovo il windowid da passare a screencapture -l?


26

L'utilità della riga di comando screencapture afferma di essere in grado di catturare una singola finestra senza richiedere interazione, ma non riesco a capire cosa passarlo.

-l<windowid> capture this windowsid

Non è l'ID del processo dell'applicazione.

Risposte:


22

Per alcune applicazioni puoi usare AppleScript:

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

Tuttavia, non funziona con Chrome .

Gli ID vengono inoltre visualizzati in Quartz Debug (disponibile da developer.apple.com/downloads ) se si esegue defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.


1
Sfortunatamente, questo non funziona con app non compatibili con Apples come Eclipse o Google Chrome.
— CajunLuke,

Sì, la mia app di destinazione non è compatibile con le app :( Ma grazie comunque.
— Gareth Simpson,

2
Si noti che gli ID finestra non sono garantiti per corrispondere all'ID finestra Quartz anche nelle applicazioni che sono programmabili tramite script.
— Chris Page

Il debug al quarzo sembra non esistere più oppure è stato rinominato o raggruppato?
— Gman,

Quartz Debug è incluso in "Strumenti aggiuntivi per Xcode" disponibile su developer.apple.com/download/more .
— Nicholas Riley,

9

Ho scritto una piccola utility da riga di comando per recuperare l'ID finestra per le app che non supportano AppleScript. Scarica qui: https://github.com/smokris/GetWindowID

È quindi possibile acquisire una finestra specifica specificando il nome del pacchetto e il titolo della finestra:

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

Ciao, sto provando a usarlo ma non sono sicuro di quello che sto facendo. Ho scaricato Makefile, GetWindowID.m. Ma quando lancio il comando ./GetWindowID.m mi dà questo errore: ./ GetWindowID.m: riga 4: errore di sintassi vicino token imprevisto (' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
— KingBOB

1
@Giorgio: aprire una finestra Terminale e passare alla cartella che contiene Makefilee GetWindowID.m, quindi, eseguire il comando make. Produrrà un binario chiamato GetWindowID, che puoi quindi invocare usando il comando che ho descritto nella mia risposta.
— smokris,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.