有没有办法在不执行system("osascript ...")
的情况下执行Apple脚本允许的任务?换句话说,osascript
在幕后做了什么?
它与libDiagnosticMessagesClient
,libEdit
,AppKit,Carbon,Foundation,ApplicationServices,CoreFoundation和CoreServices相关联,因此答案必须在于其中之一。
答案 0 :(得分:1)
vadian说什么。通过AppleScript-ObjC桥直接调用AppleScript是迄今为止最不可靠的选项。
AppleEventManager / NSAppleEventDescriptor / NSAppleScript / NSUserAppleScriptTask / OSAKit都缺乏良好的高级API和文档,并且是一个可以使用的PITA。用于自动化的脚本桥和JavaScript是混乱的废话;除了最琐碎的任务之外,它不适合任何其他任务。不再支持Appscript及其衍生产品。苹果公司(姗姗来迟)解雇了它的Mac自动化PM并在2016年解散了整个团队,整个筹码已经开始变得粗糙,所以如果你能避免它,那么投入大量时间并不值得。
AppleScript作为一种语言可能很糟糕,但它是唯一一个能够正确说出Apple活动的支持选项,而唯一一个拥有文档和社区支持的选项值得一试。当你遇到如何控制个别应用时,这会产生巨大的差异。 (你将会这么做。很多。)
ASOC消除了从ObjC或ObjC桥接语言调用AS的90%的痛苦。 ObjC / Python的快速操作方法here;如果您使用Swift,可能需要更多的电子设备,但网络搜索应该提供有关如何操作的信息。
答案 1 :(得分:0)
啊看起来它使用Apple Event Manager(OSAscript代表Open Scripting Architecture)。
更多信息here。此外,有些东西可以生成比直接使用事件管理器更简单的API - scripting bridge。