Как мне найти 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.


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

Привет, я пытаюсь использовать это, но я не уверен в том, что я делаю. Я скачал 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.