Wie finde ich die windowid, die an screencapture -l übergeben werden soll?

26

Das Kommandozeilenprogramm screencapture behauptet, ein einzelnes Fenster ohne Interaktion erfassen zu können, aber ich kann nicht herausfinden, was es passieren soll.

-l<windowid> capture this windowsid

Es ist nicht die Prozess-ID der Anwendung.

Gareth Simpson
quelle

Antworten:

22

Für einige Anwendungen können Sie AppleScript verwenden:

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

Mit Chrome funktioniert es jedoch nicht .

Die IDs werden auch in Quartz Debug (verfügbar unter developer.apple.com/downloads ) angezeigt, wenn Sie ausgeführt werden defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.

Lri
quelle
1
Leider funktioniert dies nicht mit nicht beschreibbaren Apps wie Eclipse oder Google Chrome.
CajunLuke
Ja, meine Ziel-App ist nicht beschreibbar :( Aber trotzdem danke.
Gareth Simpson
2
Beachten Sie, dass die Fenster-IDs auch in skriptfähigen Anwendungen nicht unbedingt der Quartz-Fenster-ID entsprechen.
Chris Seite
Quartz-Debug scheint nicht mehr zu existieren oder wurde es umbenannt oder gebündelt?
gman
Quartz Debug ist in "Additional Tools for Xcode" enthalten, das unter developer.apple.com/download/more verfügbar ist .
Nicholas Riley
9

Ich habe ein kleines Befehlszeilenprogramm geschrieben, um die Windows-ID für Apps abzurufen, die AppleScript nicht unterstützen. Laden Sie es hier herunter : https://github.com/smokris/GetWindowID

Sie können dann ein bestimmtes Fenster erfassen, indem Sie den Bundle-Namen und den Fenstertitel angeben:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png
Smokris
quelle
Hallo, ich versuche es zu benutzen, aber ich bin nicht sicher, was ich tue. Ich habe das Makefile GetWindowID.m heruntergeladen. Aber wenn ich den Befehl ./GetWindowID.m starte, erhalte ich den folgenden Fehler: ./ GetWindowID.m: Zeile 4: Syntaxfehler in der Nähe des unerwarteten Tokens (' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
KingBOB
1
@ Giorgio: Öffnen Sie ein Terminalfenster und wechseln Sie in den Ordner, der Makefileund enthält. GetWindowID.mFühren Sie dann den Befehl aus make. Es wird eine Binärdatei mit dem Namen erzeugt GetWindowID, die Sie dann mit dem in meiner Antwort beschriebenen Befehl aufrufen können.
Smokris
6

Ich habe ein Befehlszeilenprogramm geschrieben, das screencapturedie Fensterbibliothek von Quartz umschließt.

Hier gehts zum Download: https://github.com/thismachinechills/pyscreencapture

Benutze es so:

./screencapture.py Chrome -t Stack Overflow
thismachinechills
quelle
Haben Sie das doppelte Anführungszeichen verpasst?
Kenorb