Làm thế nào để tôi tìm thấy windowid để vượt qua screencapture -l?


26

Tiện ích dòng lệnh screencapture tuyên bố có thể chụp một cửa sổ duy nhất mà không cần tương tác, nhưng tôi không thể tìm ra cái gì để vượt qua nó.

-l<windowid> capture this windowsid

Đây không phải là id quá trình của ứng dụng.

Câu trả lời:


22

Đối với một số ứng dụng, bạn có thể sử dụng AppleScript:

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

Nó không hoạt động với Chrome .

ID cũng được hiển thị trong Quartz Debug (có sẵn từ developer.apple.com/doads ) nếu bạn chạy defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool true.


1
Thật không may, điều này không hoạt động với các ứng dụng không thể mô tả như Eclipse hoặc Google Chrome.
CajunLuke

Vâng, ứng dụng mục tiêu của tôi không phải là Applescriptable :( Nhưng dù sao cũng cảm ơn bạn.
Gareth Simpson

2
Lưu ý rằng id cửa sổ không được đảm bảo tương ứng với id cửa sổ Quartz ngay cả trong các ứng dụng có thể viết script.
Chris Trang

Gỡ lỗi thạch anh dường như không còn tồn tại nếu không nó đã được đổi tên hoặc đóng gói?
gman

Quartz Debug được bao gồm trong "Công cụ bổ sung cho Xcode" có sẵn tại developer.apple.com/doad/more .
Nicholas Riley

9

Tôi đã viết một tiện ích dòng lệnh nhỏ để lấy ID cửa sổ cho các ứng dụng không hỗ trợ AppleScript. Lấy nó ở đây: https://github.com/smokris/GetWindowID

Sau đó, bạn có thể chụp một cửa sổ cụ thể bằng cách chỉ định tên gói và tiêu đề cửa sổ của nó:

screencapture -l$(./GetWindowID "Vuo Editor" "untitled composition") VuoEditorWindow.png

Xin chào, tôi đang cố gắng sử dụng nó nhưng tôi không chắc mình đang làm gì. Tôi đã tải xuống Makefile, GetWindowID.m. Nhưng khi tôi khởi động lệnh ./GetWindowID.m nó mang lại cho tôi lỗi này: ./ GetWindowID.m: dòng 4: lỗi cú pháp gần bất ngờ thẻ (' ./GetWindowID.m: line 4: int main (int argc, char ** argv)'
KingBOB

1
@Giorgio: Mở cửa sổ Terminal và thay đổi thư mục chứa MakefileGetWindowID.msau đó chạy lệnh make. Nó sẽ tạo ra một nhị phân được gọi GetWindowID, sau đó bạn có thể gọi bằng lệnh tôi đã mô tả trong câu trả lời của mình.
smokris

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.