Jak znaleźć oknoid do przekazania do screencapture -l?

26

Narzędzie screencapture z wiersza poleceń twierdzi, że jest w stanie uchwycić pojedyncze okno bez konieczności interakcji, ale nie wiem, co przekazać.

-l<windowid> capture this windowsid

To nie jest identyfikator procesu aplikacji.

Gareth Simpson
źródło

Odpowiedzi:

22

W przypadku niektórych aplikacji możesz użyć AppleScript:

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

Jednak nie działa z Chrome .

Identyfikatory są również wyświetlane w Quartz Debug (dostępny na stronie developer.apple.com/downloads ), jeśli uruchomisz defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.

Lri
źródło
1
Niestety nie działa to z aplikacjami, które nie obsługują apletów, takimi jak Eclipse lub Google Chrome.
CajunLuke
Tak, moja aplikacja docelowa nie jest przystosowana do Applescriptable :( Ale i tak dziękuję.
Gareth Simpson
2
Należy pamiętać, że nie można zagwarantować, że identyfikatory okien będą odpowiadać identyfikatorom okien kwarcu, nawet w aplikacjach, które można skryptować.
Chris Page
Debugowanie kwarcu wydaje się już nie istnieć, czy też została zmieniona nazwa lub pakiet?
gman
Quartz Debug jest zawarty w „Dodatkowych narzędziach do Xcode” dostępnych na stronie developer.apple.com/download/more .
Nicholas Riley
9

Napisałem małe narzędzie wiersza polecenia do pobierania identyfikatora Windows dla aplikacji, które nie obsługują AppleScript. Pobierz tutaj: https://github.com/smokris/GetWindowID

Następnie można uchwycić określone okno, określając jego nazwę pakietu i tytuł okna:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png
smokris
źródło
Cześć, próbuję go użyć, ale nie jestem pewien, co robię. Pobrałem plik Makefile, GetWindowID.m. Ale po uruchomieniu polecenia ./GetWindowID.m pojawia się następujący błąd: ./ GetWindowID.m: linia 4: błąd składniowy w pobliżu nieoczekiwanego tokena (' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
KingBOB
1
@Giorgio: Otwórz okno terminala i przejdź do folderu, który zawiera Makefilei GetWindowID.m, a następnie uruchomić komendę make. Spowoduje to utworzenie pliku binarnego o nazwie GetWindowID, który można następnie wywołać za pomocą polecenia opisanego w mojej odpowiedzi.
smokris
6

Napisałem narzędzie wiersza poleceń, które się zawija, screencaptureoraz bibliotekę okien Quartz.

Złap to tutaj: https://github.com/thismachinechills/pyscreencapture

Użyj tego w ten sposób:

./screencapture.py Chrome -t Stack Overflow
thismachinechills
źródło
Czy przegapiłeś podwójny cytat?
kenorb