Захват экрана с помощью AppleScript

Работа над AppleScript, который открывает веб-страницу в Safari и делает снимок экрана определенной области (используя Cmd+Shift+4). Но у меня возникли проблемы с автоматической частью захвата экрана.

Я использую MouseTools, чтобы щелкать и перемещать мышь.

set x to POSIX file ((POSIX path of (path to me)) & "/.." & "/MouseTools") as text
set pathName to POSIX path of x

tell application "Safari" to activate
open location "http://google.com"
delay 1
#do shell script quoted form of pathName & " -x 500 -y 167"
delay 1
tell application "System Events"
    #keystroke "3" using {command down, shift down}
end tell
delay 1
#do shell script quoted form of pathName & " -leftClick"

и т.д...

Команда нажатия клавиш работает для всего, кроме захвата экрана. Следующая проблема заключается в перемещении мыши, удерживая левую кнопку мыши. У кого-то это получилось или есть лучший подход?


person MartinR    schedule 06.01.2012    source источник


Ответы (1)


Я рад видеть, что вы используете MouseTools. Это моя программа! Однако есть инструмент командной строки для создания снимков экрана, который называется screencapture. Я уверен, что вы должны использовать это вместо вашего подхода к графическому интерфейсу. Например, вот как получить изображение всего рабочего стола...

set imagePath to (path to desktop as text) & "screenCapture.png"
do shell script "screencapture -mx -T0 " & quoted form of POSIX path of imagePath

Я уверен, что есть способы захватить только определенную область экрана с помощью захвата экрана. Небольшой поиск на его справочной странице или в Google должен что-то найти по этому поводу.

person regulus6633    schedule 07.01.2012
comment
Это хороший маленький инструмент командной строки, который вы там сделали. Я протестировал командный инструмент для захвата экрана, и он отлично работает для полноэкранных снимков экрана. К сожалению, это не работает в сочетании с вашими MouseTools. Когда я использую do shell script "screencapture -i ~/Desktop/picture.png" (так же, как CMD+SHIFT+4), он остается в этом режиме, пока я не щелкну мышью вручную, и он не будет реагировать на do shell script quoted form of pathName & " -leftClick" или что-либо из других сценариев. - person MartinR; 07.01.2012
comment
Жаль, что захват экрана не может делать только части экрана и не распознает щелчки MouseTools. Однако другой идеей было бы сделать снимок всего экрана, а затем использовать другой инструмент, чтобы обрезать изображение на весь экран до нужного вам размера. События изображения могут обрезать только центр изображения, но вы можете использовать такой инструмент, как ImageMagick, чтобы обрезать там, где вам нужно. См. здесь: imagemagick.org/script/index.php - person regulus6633; 08.01.2012
comment
Простая задача, кажется, превращается в гигантский скрипт с несколькими всплывающими программами. Думаю, мне нужно пересмотреть свою стратегию. Все равно, спасибо за помощь. - person MartinR; 08.01.2012
comment
Почему самый очевидный подход с использованием последовательностей клавиш GUI не работает? - person jerseyboy; 28.01.2012