Утилита командной строки screencapture утверждает, что может захватывать одно окно, не требуя взаимодействия, но я не могу понять, что передать.
-l<windowid> capture this windowsid
Это не идентификатор процесса приложения.
Для некоторых приложений вы можете использовать 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
.
Я написал небольшую утилиту командной строки для получения идентификатора окна для приложений, которые не поддерживают AppleScript. Получите это здесь: https://github.com/smokris/GetWindowID
Затем вы можете захватить определенное окно, указав его имя пакета и заголовок окна:
источник
(' ./GetWindowID.m: line 4:
int main (int argc, char ** argv) 'Makefile
иGetWindowID.m
, а затем выполните командуmake
. Он создаст двоичный файл с именемGetWindowID
, который вы можете затем вызвать с помощью команды, которую я описал в своем ответе.Я написал утилиту командной строки
screencapture
и библиотеку окон Quartz.Возьмите его здесь: https://github.com/thismachinechills/pyscreencapture
Используйте это так:
источник