先从进程里结束EXCEL后,再打开EXCEL就可以了。
uses TLHelp32;
{$R *.dfm}
{=================================================================
功 能: 结束进程里的AFileName程序
参 数: AFileName文件名称
=================================================================}
procedure EndProcess(AFileName: string);
const
PROCESS_TERMINATE = $0001;
var
ExeFileName: string;
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
ExeFileName := AFileName;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0);
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EndProcess('EXCEL.EXE');
end;