Как мне найти windowid для передачи в screencapture -l?

26

Утилита командной строки screencapture утверждает, что может захватывать одно окно, не требуя взаимодействия, но я не могу понять, что передать.

-l<windowid> capture this windowsid

Это не идентификатор процесса приложения.

Гарет Симпсон
источник

Ответы:

22

Для некоторых приложений вы можете использовать AppleScript:

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

Это не работает с Chrome, хотя.

Идентификаторы также отображаются в Quartz Debug (доступно на developer.apple.com/downloads ), если вы запускаете defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.

LRI
источник
1
К сожалению, это не работает с неподписанными приложениями, такими как Eclipse или Google Chrome.
CajunLuke
Да, мое целевое приложение не является приемлемым :( Но все равно спасибо.
Гарет Симпсон
2
Обратите внимание, что идентификаторы окна не обязательно соответствуют идентификатору окна Quartz даже в приложениях, которые могут быть написаны с помощью скриптов.
Крис Пейдж
Кварцевая отладка, кажется, больше не существует, или она была переименована или в комплекте?
мужчина
Отладка Quartz включена в «Дополнительные инструменты для Xcode», доступные на developer.apple.com/download/more .
Николас Райли
9

Я написал небольшую утилиту командной строки для получения идентификатора окна для приложений, которые не поддерживают AppleScript. Получите это здесь: https://github.com/smokris/GetWindowID

Затем вы можете захватить определенное окно, указав его имя пакета и заголовок окна:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png
smokris
источник
Привет, я пытаюсь использовать это, но я не уверен в том, что я делаю. Я скачал Makefile, GetWindowID.m. Но когда я запускаю команду ./GetWindowID.m, она выдает мне эту ошибку: ./ GetWindowID.m: строка 4: синтаксическая ошибка рядом с неожиданным токеном (' ./GetWindowID.m: line 4: int main (int argc, char ** argv) '
KingBOB
1
@ Джорджио: откройте окно терминала и перейдите в папку, содержащую Makefileи GetWindowID.m, а затем выполните команду make. Он создаст двоичный файл с именем GetWindowID, который вы можете затем вызвать с помощью команды, которую я описал в своем ответе.
Smokris
6

Я написал утилиту командной строки screencaptureи библиотеку окон Quartz.

Возьмите его здесь: https://github.com/thismachinechills/pyscreencapture

Используйте это так:

./screencapture.py Chrome -t Stack Overflow
thismachinechills
источник
Вы пропустили двойную кавычку?
Кенорб