Как открыть .EXE с помощью Javascript / XPCOM под Windows «Run ...»? - PullRequest
1 голос
/ 30 мая 2011

У меня есть веб-приложение для внутренней сети, которому необходимо запускать некоторые внешние приложения, такие как Word, Notepad и другие ... Мой код разрешает доступ с помощью IE (ActiveX) и Firefox (XPCOM).Когда я использую весь путь (например, «C: \ windows \ notepad.exe»), я могу работать в обоих браузерах, но проблема в том, что существует множество версий для некоторых приложений, таких как Microsoft Word (2003, 2007, 2010 ...), и локальный путь всегда отличается, НО, если я использую опцию «Выполнить ...» в Windows, я могу только напечатать «winword.exe» и загрузить MS Word, кроме его версии.Если я передаю только имя файла ActiveX в IE, я могу вызвать 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>

Любая помощь будет оценена.Спасибо.

1 Ответ

3 голосов
/ 30 мая 2011

Я считаю, что ваша проблема заключается в том, что IE напрямую работает с Windows, где Firefox предназначен для кроссплатформенности. Предполагая, что вы хотите, чтобы это работало только в Windows, вы можете выполнить командную строку

    C:\Windows\System32\cmd.exe

и передайте ему аргумент типа

    start winword.exe

Тогда он будет работать так же, как и Run.

...