Есть ли способ с помощью AppleScript щелкать пункты меню osx без доступа к "Системным событиям"?
Я использую код, подобный этому, чтобы автоматически делать некоторые щелчки в меню, вместо того, чтобы делать их каждый раз самостоятельно:
tell application "System Events" to tell process "myApp"
click something and so on
end tell
Теперь, чтобы сделать эту работу в песочнице osx lion, мой файл с правами выглядит следующим образом (для выяснения этого было проделано много исследований):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.apple.systemevents</string>
<string>com.apple.iphonesimulator</string>
</array>
</dict>
</plist>
И теперь, как хочет бог, яблоко отклоняет это приложение, потому что я обращаюсь com.apple.systemevents
, Есть ли способ обойти, используя System Events
щелкнуть указанные пункты меню в меню указанного приложения?
2 ответа
Нет. Отправка событий пользовательского интерфейса другому процессу является нарушением изолированной среды приложения.
Я знаю, что это было давно, я только нашел ваш вопрос.
Что бы это ни стоило, вы можете заглянуть в утилиты MouseTools и Click: http://www.hamsoftengineering.com/codeSharing/MouseTools/MouseTools.html
http://hints.macworld.com/article.php?story=2008051406323031
Код Objective C идет с этим. Я успешно использовал это в своих приложениях, чтобы щелкать по другим частям экрана без AppleScript.
Другой способ - использовать JavaScript для автоматизации пользовательского интерфейса. Ищите эти ключевые слова на сайте разработчиков Apple. Я хотел бы опубликовать ссылки, но не возможно, потому что форум ограничен:(
В обоих случаях вам нужно будет добавить Временное право в ваше приложение, чтобы программа работала в "песочнице".