ActiveXObject («Shell.Application») - как передать аргументы с пробелами? - PullRequest
3 голосов
/ 22 декабря 2011

Я запускаю exe из моего asp.net с JavaScript, используя ActiveXObject. Работает успешно, кроме параметров:

function CallEXE() {
  var oShell = new ActiveXObject("Shell.Application");
  var prog = "C:\\Users\\admin\\Desktop\\myCustom.exe";                 
  oShell.ShellExecute(prog,"customer name fullname","","open","1");
}

Например, я передаю подобные параметры, [1] имя клиента, [2] полное имя, но после пробела Javascript воспринимает другой параметр.

Как мне исправить?

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Попробуйте убежать от пробела с помощью обратной косой черты. Команда cmd.exe cd делает это, может быть, вам повезет, и она будет работать и здесь ...

oShell.ShellExecute(prog,"customer a\ name\ with\ spaces fullname", ...)
1 голос
/ 22 декабря 2011

ShellExecute принимает 2-й параметр как строку, которая представляет все аргументы и обрабатывает их, используя обычные правила обработки оболочки: в частности, пробелы и кавычки.

oShell.ShellExecute(prog,"customer name fullname",...)

В этом случае передаются 3 параметра: customer, name, fullname

oShell.ShellExecute(prog,"customer 'a name with spaces' fullname",...)

Как исправлено/ отметил Реми Лебо - TeamB, двойные кавычки могут использоваться для определения границ аргумента:

oShell.ShellExecute(prog,'customer "a name with spaces" fullname',...)

В этом случае передаются 3 параметра: customer, a name with spaces, fullname

То есть, подумайте, как бы вы вызвали myCustom.exe из командной строки.То же самое при использовании ShellExecute.

Счастливое кодирование.

...