L
lonesashimi
Unregistered / Unconfirmed
GUEST, unregistred user!
最开始我使用
ExcelApplication.quit;
excelworksheet.Disconnect;
excelworkbook.Disconnect;
ExcelApplication.disconnect;
宣告失败
后来编写了这段代码:
procedure TerminateOLE;
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
Ret : BOOL;
ProcessID : integer;
s:string;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
while Ret do
begin
s:=ExtractFileName(FProcessEntry32.szExeFile);
if s='EXCEL.EXE' then
begin
ProcessID:=FProcessEntry32.th32ProcessID;
TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,ProcessID),1);
s:='';
end;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;
在win2000下确实杀掉了进程也不出什麽差错,
但在win98下多次连续调用Excel将死机。
请问如何才能保证程序在win98/me下彻底杀掉进程并释放内存。
不好意思,上坛时间短,所供点数微薄,还请海含
ExcelApplication.quit;
excelworksheet.Disconnect;
excelworkbook.Disconnect;
ExcelApplication.disconnect;
宣告失败
后来编写了这段代码:
procedure TerminateOLE;
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
Ret : BOOL;
ProcessID : integer;
s:string;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
while Ret do
begin
s:=ExtractFileName(FProcessEntry32.szExeFile);
if s='EXCEL.EXE' then
begin
ProcessID:=FProcessEntry32.th32ProcessID;
TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,ProcessID),1);
s:='';
end;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;
在win2000下确实杀掉了进程也不出什麽差错,
但在win98下多次连续调用Excel将死机。
请问如何才能保证程序在win98/me下彻底杀掉进程并释放内存。
不好意思,上坛时间短,所供点数微薄,还请海含