var Excel = new ActiveXObject('Excel.Application');
Excel.Visible = false;
var Excel_file = Excel.Workbooks.Open(Worksheet);
}
if(x == 2)
{
Excel_file.close(false);
Excel.Quit();
Excel.Application.Quit();
Excel = null;
Excel_file = null;
window.setTimeout(CollectGarbage, 10);
//Excel.DisplayAlerts = false;
}
我使用ActiveXObject在幕后打开excel应用程序,执行我的功能(在别处定义和调用),然后关闭它。问题是通过任务管理器,每次运行程序时,它都会在进程部分中创建一个新的EXCEL.EXE * 32实例。
此脚本位于网页上,并且会在一天中经常运行。每次程序运行时都不可能创建它的不同实例。
我试图像其他人推荐的那样使用未记录的“CollectGarbage”,但它仍然无法解决问题。
有什么想法吗? 谢谢。
答案 0 :(得分:0)
您可以使用相同的activex对象终止任务管理器中的任务。试试下面的
var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("taskkill /F /IM EXCEL.exe");
TASKKILL
结束一个或多个进程(按进程ID或图像名称)。
语法 TASKKILL [/ S system [/ U username [/ P [password]]]] {[/ FI filter] [/ PID processid | / IM imagename]} [/ F] [/ T]
选项 / S system要连接的远程系统。
/U [domain\]user The user context under which
the command should execute.
/P [password] The password. Prompts for input if omitted.
/F Forcefully terminate the process(es).
/FI filter Display a set of tasks that match a
given criteria specified by the filter.
/PID process id The PID of the process to be terminated.
/IM image name The image name of the process to be terminated.
Wildcard '*' can be used to specify all image names.
/T Tree kill: terminates the specified process
and any child processes which were started by it.
过滤器应用以下过滤器之一:
Imagename eq, ne String
PID eq, ne, gt, lt, ge, le Positive integer.
Session eq, ne, gt, lt, ge, le Any valid session number.
Status eq, ne RUNNING | NOT RESPONDING
CPUTime eq, ne, gt, lt, ge, le Time hh:mm:ss
MemUsage eq, ne, gt, lt, ge, le Any valid integer.
Username eq, ne User name ([Domain\]User).
Services eq, ne String The service name
Windowtitle eq, ne String
Modules eq, ne String The DLL name