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.

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.


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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.