我正在开发一个HTA应用,通过动态设置iframe
的{{1}}来显示src
中的pdf文件。
HTML:
iframe
相关脚本:
<iframe id="preview" src="" application="yes"></iframe>
这很好用,但是当我关闭应用程序时,我仍然可以看到在任务管理器的进程选项卡中运行mshta.exe。如果从未将任何pdf加载到var path = 'some_path/file_name.pdf';
document.getElementById('preview').src = path;
,则mshta.exe进程将正确终止。如果加载.htm文件而不是.pdf,也没有麻烦。如果任何加载的pdf是由3DDUtility.exe运行的3D pdf,则只会出现此问题。
在onbeforeunload处理程序中将.htm文件加载到iframe
并不能解决问题。我发现的唯一可行解决方案是通过WMI杀死A3DUtility.exe进程(下面的脚本)。但是,这是关闭程序的一种野蛮方式,因为我无法确定是否还有其他窗口运行嵌入式A3DUtility.exe。
iframe
在关闭应用程序之前,我有什么办法可以在beforeTopClose = function () {
var pdf,
pdfs = new Enumerator(lib.wmiService.ExecQuery("Select * from Win32_Process Where name = 'A3DUtility.exe'"));
while (!pdfs.atEnd()) {
if (pdfs.item().CommandLine.indexOf('-Embedding') > -1) {
pdf = pdfs.item();
}
pdfs.moveNext();
}
if (pdf) {
pdf.Terminate();
}
return;
}
内正确关闭3D pdf吗?
修改
这似乎与之前版本的A3DUtility.exe本身有关。当我更新Adobe Reader(从10到11)时,问题就不再发生了。