在applescript程序中探索可用命令

时间:2015-03-16 17:17:55

标签: applescript

我有一个应用程序,我可以执行以下命令(我知道这是因为我用Google搜索了它):

tell app "TextMate" to reload bundles

我真正想要的是能够询问“TextMate”程序:

tell app "TextMate" to list all commands

并列出我可以要求它做的所有事情:

... 'reload bundles', 'exit', 'open files'...

有没有办法用AppleScript做到这一点?

1 个答案:

答案 0 :(得分:2)

查找应用程序的所有命令的方法是在脚本编辑器中打开其字典。通常在“文件”菜单中“打开字典...”,或将应用程序拖放到脚本编辑器中。

<强> [编辑]

对于具有AppleScript支持的应用程序,您实际上可以使用脚本编辑器脚本打开应用程序本身:la:

set pathToApp to (choose file of type "APPL")
tell application "Script Editor"
 open pathToApp
end tell

但是使用不可编写脚本的应用程序会出现问题。你会收到一个错误,但脚本编辑器实际上会打开应用程序的某些部分(而且它会很慢),然后给你一个无法使用的文档。没有办法抓住这个错误。如果您使用Smile脚本编辑器,则可以使用此方法...

set p to (choose file of type "APPL")
try
    OpenDictionary(alias (p as string))
on error e

end try

...打开应用程序的字典,如果它不起作用(如果应用程序没有字典),它会返回错误但不做任何其他事情(但同样,你可以没有黑客微笑就抓住错误并且不要抱怨它。

[编辑2]

一个兔子洞正在尝试系统事件或Finder检查进程的has scripting terminology属性的布尔值,但我不推荐它,因为我没有发现它是可靠的。< / p>

[编辑3]

胆碱!我知道还有另一种方法,但忘了它是什么。正如@ mklement0指出的那样(谢谢),您可以在脚本编辑器中打开应用程序之前检查应用程序的脚本功能:

set pathToApp to (choose file of type "APPL") as text
set isScriptable to false
try
    class of application pathToApp
    -- only AppleScriptable applications have a class property 
    set isScriptable to true
end try

isScriptable