ฉันจะหา windowid เพื่อส่งไปยัง screencapture -l ได้อย่างไร?


26

หน้าจอยูทิลิตี้บรรทัดคำสั่งอ้างว่าสามารถจับภาพหน้าต่างเดียวโดยไม่ต้องมีการโต้ตอบ แต่ฉันไม่สามารถคิดได้ว่าจะผ่านอะไรไป

-l<windowid> capture this windowsid

ไม่ใช่รหัสกระบวนการของแอปพลิเคชัน

คำตอบ:


22

สำหรับบางแอปพลิเคชันคุณสามารถใช้ AppleScript:

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

ไม่สามารถใช้งานกับChromeได้

รหัสจะแสดงยังอยู่ในควอตซ์ Debug (ข้อมูลจากdeveloper.apple.com/downloads ) defaults write com.apple.QuartzDebug QuartzDebugPrivateInterface -bool trueถ้าคุณทำงาน


1
น่าเสียดายที่นี่ไม่สามารถใช้ได้กับแอปที่ไม่สามารถอ่านได้เช่น Eclipse หรือ Google Chrome
CajunLuke

ใช่แอปเป้าหมายของฉันไม่ใช่ Applescriptable :( แต่ขอขอบคุณล่ะ
Gareth Simpson

2
โปรดทราบว่ารหัสหน้าต่างจะไม่รับประกันว่าจะตรงกับ id หน้าต่างควอตซ์แม้ในแอปพลิเคชันที่สามารถสคริปต์ได้
Chris Page

การดีบักของควอตซ์ดูเหมือนจะไม่มีอยู่อีกต่อไปหรือมีการเปลี่ยนชื่อหรือรวมเป็นกลุ่มหรือไม่
gman

ควอตซ์ Debug จะรวมอยู่ใน "เครื่องมือเพิ่มเติมสำหรับ Xcode" ที่มีอยู่ในdeveloper.apple.com/download/more
นิโคลัสไรลีย์

9

ฉันเขียนอรรถประโยชน์บรรทัดคำสั่งเล็กน้อยเพื่อดึง Window ID สำหรับแอปที่ไม่รองรับ 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 หลักที่ไม่คาดคิด(int argc, char ** argv) '
KingBOB

1
@Giorgio: เปิดหน้าต่าง Terminal และเปลี่ยนไปยังโฟลเดอร์ที่มีMakefileและจากนั้นเรียกใช้คำสั่งGetWindowID.m makeมันจะสร้างไบนารีที่เรียกว่าGetWindowIDซึ่งคุณสามารถเรียกใช้คำสั่งที่ฉันอธิบายในคำตอบของฉัน
smokris

6

ฉันเขียนยูทิลิตีบรรทัดคำสั่งที่ล้อมรอบscreencaptureและไลบรารี windowing ของควอตซ์

คว้าได้ที่นี่: https://github.com/thismachinechills/pyscreencapture

ใช้มันแบบนี้:

./screencapture.py Chrome -t Stack Overflow

คุณพลาดคำพูดสองครั้งหรือไม่?
kenorb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.