ActiveXObject(“Shell.Application”) - 如何用空格传递参数?

时间:2011-12-21 20:56:50

标签: asp.net activex shellexecute

我使用ActiveXObject使用JavaScript从我的asp.net运行exe。它成功运行,参数除外:

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 个答案:

答案 0 :(得分:1)

ShellExecute将第二个参数作为表示 all 参数的字符串,并使用常规shell处理规则处理这些参数:特别是空格和引号。

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

在这种情况下,传递的3个参数是customernamefullname

<德尔> oShell.ShellExecute(prog,"customer 'a name with spaces' fullname",...)

由Remy Lebeau - TeamB更正/注意,双引号可用于定义参数边界:

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

在这种情况下,传递的3个参数是customera name with spacesfullname

也就是说,想一想如何从命令提示符中调用myCustom.exe。使用ShellExecute时也是如此。

快乐的编码。

答案 1 :(得分:1)

尝试使用反斜杠转义空格。 cmd.exe cd命令执行此操作,也许您会很幸运,它也会在这里工作...

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