我有一个应用程序,我可以执行以下命令(我知道这是因为我用Google搜索了它):
tell app "TextMate" to reload bundles
我真正想要的是能够询问“TextMate”程序:
tell app "TextMate" to list all commands
并列出我可以要求它做的所有事情:
... 'reload bundles', 'exit', 'open files'...
有没有办法用AppleScript做到这一点?
答案 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