Запуск Exe в Firefox, почему я получаю ошибку - PullRequest
0 голосов
/ 24 июня 2011

Я запускаю это в Firefox, при нажатии на ссылку Firefox говорит NS_ERROR_FILE_UNRECOGNIZED_PATH, где я следовал приведенной здесь инструкции Как открыть .EXE с помощью Javascript / XPCOM как Windows «Run ...»?

<html>
<head>
<script>
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());
    }
}
</script>
</head>
<body>
<a href="#" onclick="javascript:RunExe('C:\Windows\System32\cmd.exe /c start winword.exe');">Open Word</a>
</body>

1 Ответ

2 голосов
/ 24 июня 2011

В литералах javascript обратная косая черта указывает на начало escape-последовательности.Если вы действительно хотите представить обратную косую черту, вы можете избежать ее с двойной обратной косой чертой.

т.е. ' C: \\ Windows \\ System32 \\ cmd.exe / c start winword.exe '

http://www.javascriptkit.com/jsref/escapesequence.shtml

РЕДАКТИРОВАТЬ: Из комментариев на правильный ответ из поста, который вы связали, похоже, что он получил это работает:

толькопередать путь к runexe: javascript: RunExe ('C: \ Windows \ System32 \ cmd.exe')

установить параметры, равные аргументам команды: var parameters =["/ c start winword.exe"];

Так что теоретически это будет работать:

<html>
<head>
<script>
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 = ["/c start winword.exe"];
            run.run(false, parameters, parameters.length);
        }
    } catch (ex) {
        alert(ex.toString());
    }
}
</script>
</head>
<body>
<a href="#" onclick="javascript:RunExe('C:\\Windows\\System32\\cmd.exe');">Open Word</a>
</body>

Хотя ясно, что лучше передать параметры в качестве аргумента, чемжестко закодируйте их, как я сделал здесь (или передайте их как часть пути и проанализируйте их)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...