0

我使用这样的代码自动执行一些菜单点击,而不是每次都自己执行:

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单击指定应用程序菜单中的指定菜单项的方法?

4

2 回答 2

3

不可以。将 UI 事件发送到另一个进程本质上违反了应用程序沙盒。

于 2012-10-29T19:40:09.050 回答
0

我知道已经有一段时间了,我刚刚发现了你的问题。

对于它的价值,您可能需要查看 MouseTools 和 Click 实用程序: http ://www.hamsoftengineering.com/codeSharing/MouseTools/MouseTools.html

http://hints.macworld.com/article.php?story=2008051406323031

Objective-C 代码随它一起提供。我已经成功地在我的应用程序中使用它来单击没有 AppleScript 的屏幕的其他部分。

另一种方法是使用 JavaScript 进行 UI 自动化。在 Apple 开发者网站上查找这些关键字。我很想发布链接,但不可能因为论坛限制:(

在这两种情况下,您都必须为您的应用程序添加一个临时权利,以便点击在沙盒中工作。

于 2014-06-13T12:34:23.210 回答