我正在调用带有WScript.shell的ActiveX .exe文件。 该文件是wkhtmltopdf.exe,它是用来将HTML页面转换为.pdf。 一切运作良好时,我打电话C:在代码\ wkhtmltopdf.exe。 它运行,然后关闭正确。 但我的问题是你需要与该程序名称,然后你在阅读之后,你希望它是作为创建的.PDF名HTML文件的名称CMD运行。
例如:
c:\wkhtmltopdf.exe c:\PDFTestPage.html c:\TEST.pdf
这将调用wkhtmltopdf.exe,读取C:\ PDFTestPage.html,然后创建C:\检验.pdf。 当我将它输入CMD工作正常。
有谁知道,不只是运行和.exe,但实际执行一个命令行一个ActiveX?
下面是我目前使用我的代码。
function callShellApplication(){
var objShell = new ActiveXObject("WScript.shell");
objShell.run('"c:\wkhtmltopdf.exe"');
}
真的想它是以下。
function callShellApplication(){
var objShell = new ActiveXObject("WScript.shell");
objShell.run('"c:\wkhtmltopdf.exe c:\PDFTestPage.html c:\TEST.pdf"');
}
也侧面说明。 出于某种原因,我不能从绝对路径启动.exe文件。 我必须移动到该目录,然后就在wkhtmltopdf.exe类型。 填充路径是:
C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe
我真的只用UNIX工作,所以我不知道有关在路径中有空格。 我可以做的空间一个CHDIR,但我不能执行时,它使用填充路径。 任何信息都有帮助。 先感谢您。
根据以下几点:
http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.84%29.aspx
您应该能够直接传递命令的一部分strCommand
PARAM,你可能会更好摆脱额外的引号环绕整个命令和参数:
function callShellApplication(){
var objShell = new ActiveXObject("WScript.shell");
objShell.run('c:\wkhtmltopdf.exe c:\PDFTestPage.html c:\TEST.pdf');
}
你也应该能够通过包装中的每一项报价,像这样来处理路径的空间:
function callShellApplication(){
var objShell = new ActiveXObject("WScript.shell");
objShell.run('"C:\Program Files (x86)\wkhtmltopdf\wkhtmltopdf.exe" "c:\PDFTestPage.html" "c:\TEST.pdf"');
}
你也应该记住,你是否想bWaitOnReturn
与否,以及intWindowStyle
你需要(一些可执行文件可以从一个特定的风格中获益)。
也只是作为一个谨慎注意-它已经有一段时间,因为我用WScript.shell
-但您可能需要逃避你反斜线在你的路。 因此,一个路径可能需要如下所示:
objShell.run('"C:\\Program Files (x86)\\wkhtmltopdf\\wkhtmltopdf.exe"');
对于其他任何人遇到这个问题,我有,我想我会分享一个类似(但略有不同)的问题。
我也想跑使用命令ActiveXObject("WScript.shell
。我需要运行一个.bat
脚本,将推出谷歌浏览器特定的URL。
我有JS如下:
var objShell = new ActiveXObject("WScript.shell");
objShell.run('"C:\\Scripts\\MyChromeBat.bat" MY_URL');
这将正常启动我.bat
脚本这是非常简单的:
start "" chrome.exe %1
我碰到的问题是, MY_URL
包含了一些查询参数,当我用上面的JS,在查询参数将被剥夺的程度。 所以,当我试图打开
http://localhost:8080/webapp/mypage.html?param1=test¶m2=test2
它实际上将开放
http://localhost:8080/webapp/mypage.html?param1
此修复程序竟然是简单的-我不得不围绕MY_URL
引号。 所以我修改了行
objShell.run('"C:\\Scripts\\MyChromeBat.bat" MY_URL');
成为
objShell.run('"C:\\Scripts\\MyChromeBat.bat" "MY_URL"');