Как связать форму html с командным файлом? - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть этот пакетный файл, который должен запускать пакет npm Nativefier:

SET /P _inputname= Please enter a URL:
nativefier %_inputname%

Я бы хотел запустить его из электронного приложения index.html. Ранее я пытался использовать html form и использовать следующее javascript:

$("form").submit(function(){
    var WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run ("Experiment.bat");
  });

Однако, похоже, это не сработало. У кого-нибудь есть лучшее решение? Любая помощь будет принята с благодарностью!

(я делаю это с целью создания настольного приложения, а не для веб-страницы)

1 Ответ

0 голосов
/ 12 апреля 2020

API ActiveXObject, который вы используете, доступен только в старых версиях Inte rnet Explorer, но не в Chromium (который является движком браузера Electron).

В общем, для запуска собственного исполняемого файла из Electron вы хотите использовать модуль Node.js child_process. Это должно выглядеть примерно так. Убедитесь, что webPreferences.nodeIntegration равно true в параметрах BrowserWindow, чтобы вы могли использовать API-интерфейсы Node в процессе рендеринга.

const { spawn } = require("child_process");
$("form").submit(() => {
    const process = spawn("path/to/executable.bat");
});

Обратите внимание, что вам вовсе не нужен файл .bat.

Если у вас есть nativefier в качестве зависимости, вы можете получить исполняемый файл из вашего node_modules Папка и порождение, что напрямую. Например (при условии, что отправка вашей формы содержит URL-адрес, необходимый для запуска Nativefier:

const { spawn } = require("child_process");
$("form").submit((myURL) => {
    const process = spawn(`/node_modules/path/to/nativefier/binary ${myURL}`);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...