为了存储对象的值以供外部(外部 AS)访问,我需要能够获取该对象的每个属性,然后我尝试将其强制为文本并将其存储在某个地方。
如何获取对象拥有的属性列表。作为一个例子,我可以这样写:
tell me
get properties
end tell
这适用于script object.
但对于许多其他对象,我只是收到一个错误,例如“描述符类型不匹配”,如下所示:
tell application "iTunes"
get properties of file track 1
end tell
现在我知道了优秀的脚本调试器可以做到(它可以显示任何对象的整个属性集),因此在书面AppleScript中也应该是可能的。这其中有何秘诀呢?
《Script Debugger》的作者 Mark Alldrit 非常友善地向我解释了这个“秘密”。
脚本调试器使用一些特殊的 AppleScript API 函数(包括 OSAGetPropertyNames())来获取此信息。
因此,如果我用 C 语言编写一个包装器,我也可能能做到这一点。
Update
Cocoa Scripting API 有一个专门的类(NSScriptSuiteRegistry
and NSScriptClassDescription
) - 框架通过读取应用程序的脚本定义 (.sdef) 文件来构建此信息。这样,所有可用的类及其属性都可以很容易地学习。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)