首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从XPCOM运行AppleScript

从XPCOM运行AppleScript
EN

Stack Overflow用户
提问于 2014-04-03 16:34:48
回答 1查看 52关注 0票数 2

我一直试图通过XPCOM执行applescript代码,但无论我做什么,它似乎都不起作用,观察者告诉我该过程完成时没有任何问题,但什么也没有发生。

代码语言:javascript
复制
var processArgs = ['-e','\'tell application "iTunes"\'','-e','\'activate\'','-e','\'end tell\''];

var file = Cc["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
file.initWithPath( '/usr/bin/osascript');

var process = Cc["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init( file );

var observer = {
    observe: function( subject, topic ) {
        SiteFusion.consoleMessage('DONE ' + topic);
    }
}

process.runAsync( processArgs, processArgs.length, observer );

控制台中的输出是'DONE process-finished‘,所以它应该可以工作,有人知道为什么这个脚本拒绝打开iTunes吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-24 07:52:12

原因是您在参数中使用了转义的单引号,因此实际生成的AppleScript如下所示:

代码语言:javascript
复制
'tell application "iTunes"'
'activate'
'end tell'

这显然是无效的。相反,您的参数应如下所示:

代码语言:javascript
复制
const processArgs = ['-e', 'tell application "iTunes"', '-e', 'activate', '-e', 'end tell'];

或者,或者,

代码语言:javascript
复制
const processArgs = ['-e', `
    tell application "iTunes"
        activate
    end tell`];

或者,或者,

代码语言:javascript
复制
const processArgs = ['-e', 'tell application "iTunes" to activate'];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22832082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档