0

我用這樣的代碼做一些菜單自動點擊,而不是再次每次做他們自己:有沒有辦法使用AppleScript在不訪問「系統事件」的情況下點擊osx菜單項?

tell application "System Events" to tell process "myApp" 
    click something and so on 
end tell 

現在,爲了使這項工作在OSX獅子沙箱,我的權利文件看起來像這樣(做了大量的研究摸不着頭腦):

<?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來點擊指定應用程序菜單中的指定菜單項?

回答

3

否。發送UI事件到另一個進程是固有地違反應用程序沙箱。

0

我知道已經有一段時間了,我剛剛發現你的問題。

爲了什麼它的價值,你可能想看看MouseTools然後單擊實用程序: http://www.hamsoftengineering.com/codeSharing/MouseTools/MouseTools.html

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

的Objective-C代碼與它來。我已經成功地在我的應用程序中使用它來在沒有AppleScript的情況下單擊屏幕的其他部分。

另一種方法是使用JavaScript進行UI自動化。在Apple開發人員網站上查找這些關鍵字。我很想發佈的鏈接,但不可能的,因爲版面的限制:(

在這兩種情況下,你將不得不臨時授權添加到您的應用程式時,點擊沙箱中運行。

相關問題