贴了好几天,高手请进!excel如何释放。我将EXCEL嵌入webBrowser,关闭webBrowser前,释放oleobject,但WINDOWS进程中还存

  • 主题发起人 主题发起人 dansl
  • 开始时间 开始时间
D

dansl

Unregistered / Unconfirmed
GUEST, unregistred user!
贴了好几天,高手请进!excel如何释放。我将EXCEL嵌入webBrowser,关闭webBrowser前,释放oleobject,但WINDOWS进程中还存在一个EXCEL,如何释放 (100分)<br />我将EXCEL嵌入webBrowser,关闭窗体前,将WEBBROWSER的OLEOBJECT释放掉,
但WINDOWS进程中还存在一个EXCEL,如何释放,高手指教
 
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;
 
//连接一个以存在的ole对象(或者加载新的对象到内存,如果你的ole对象还没启动的话)
uses OleServer, Excel2000;
var
ExcelApplication1: TExcelApplication;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExcelApplication1 := TExcelApplication.Create(self);
ExcelApplication1.Connect;
end;
//可以kill掉了^_^
procedure TForm1.Button2Click(Sender: TObject);
begin
ExcelApplication1.Quit;
ExcelApplication1.Free;
end;
 

Try

ExcelApplication1.Quit;

ExcelWorksheet1.Disconnect;

ExcelWorkbook1.Disconnect;

ExcelApplication1.Disconnect;

Except

End;
这个可以杀死进程
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;
 
把你的代码搞出来看看,可能是你写的代码有问题
 
接受答案了.
 
后退
顶部