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.