【问题标题】:How to open .EXE with Javascript/XPCOM as Windows "Run..."?如何使用 Javascript/XPCOM 作为 Windows“运行...”打开 .EXE?
【发布时间】:2011-05-30 14:34:07
【问题描述】:

我有一个需要运行一些外部应用程序的 Intranet Web 应用程序,如 Word、记事本和其他特定应用程序...我的代码允许使用 IE (ActiveX) 和 Firefox (XPCOM) 进行访问。当我使用整个路径(如“C:\windows\notepad.exe”)时,我可以在两种浏览器中运行,但问题是:Microsoft Word(2003、2007、2010.. .),并且本地路径总是不同的,但是如果我在 Windows 中使用“运行...”选项,我只能键入“winword.exe”和 MS Word 加载,除了它的版本。如果我只将文件名传递给 IE 中的 ActiveX,我可以调用 MS Word,但在 Firefox 中,使用 XPCOM,我不能。所以,我的问题是:有什么方法可以让 XPCOM 代码仅使用它的相对路径(文件名)运行 MS Word?我已经测试了很多方法,但没有成功。

这是我的代码:

function RunExe(path) {
    try {            
        var ua = navigator.userAgent.toLowerCase();
        if (ua.indexOf("msie") != -1) {
            MyObject = new ActiveXObject("WScript.Shell")
            MyObject.Run(path);
        } else {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

            var exe = window.Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
            exe.initWithPath(path);
            var run = window.Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess);
            run.init(exe);
            var parameters = [""];
            run.run(false, parameters, parameters.length);
        }
    } catch (ex) {
        alert(ex.toString());
    }
}

电话是这样打的:

 <a href="#" onclick="javascript:RunExe('winword.exe');">Open Word</a>

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: javascript firefox ms-office executable xpcom


    【解决方案1】:

    我相信您的问题在于 IE 直接与 Windows 一起工作,而 Firefox 旨在跨平台。假设您只希望它在 Windows 上运行,您可以执行命令提示符

        C:\Windows\System32\cmd.exe
    

    并传递一个参数,如

        start winword.exe
    

    然后它将以与 Run 相同的方式执行。

    【讨论】:

    • 以防万一有人对此感兴趣,我这样传递参数:parameters = ["/c start" + path]; //路径,在这种情况下,是'winword.exe'
    • 更明确地说见这里stackoverflow.com/questions/6472435/…
    • 请注意,理论上,Windows 可以安装在不同于C:\Windows 的目录中。
    • @Fyodor Soikin 是的,作为对@Mike C 技术的未来用户的说明 - 请改用%WINDIR% %WINDIR%\System32\cmd.exe。这样你就永远有正确的道路。
    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 2016-01-29
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多