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.

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.


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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.