Запустите локальный исполняемый файл от greasemonkey - PullRequest
4 голосов
/ 25 апреля 2011

Ниже приведен код, который я пытаюсь (плюс несколько вариантов), есть диалоговое окно, запрашивающее мое разрешение, но все равно выдается ошибка с

Ошибка: отказано в разрешении на получение свойства XPCComponents.classes

unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 

var file = unsafeWindow.Components.classes["@mozilla.org/file/local;1"]
    .createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("d:\\test.bat");

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

var args = ["argument1", "argument2"];
process.run(false, args, args.length);

Это просто невозможно?

Ответы [ 2 ]

4 голосов
/ 24 августа 2018

@ Jano ответ правильный, но вы все равно можете вызвать файл .bat, используя специальный обработчик протокола, такой как myprotocol://parameters.Также объясняется здесь: Как запустить локальную программу (exe) через Chrome через HTML / javascript

Добавление этих ключей в реестр:

HKEY_CLASSES_ROOT
   myprotocol
      (Default) = "URL:Test Protocol"
      URL Protocol = ""
      shell
         open
            command
               (Default) = "d:\test.bat" "%1"

И внутри.bat для захвата параметра:

set param=%1
echo Parameter is "%param:~13,100%

Где :~13,100 Обрезает первые 13 символов параметра (myprotocol://)

Затем в вашем сценарии просто используйте URL-адрес настраиваемого протокола для window.location, $.ajax или присвоить <a> href.

2 голосов
/ 25 апреля 2011
...