下面一段代码是结束WORD进程,供参考: procedure KillWordProcess; const PROCESS_TERMINATE = $0001; var ContinueLoop: Boolean; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; ExeFileName: string; i: Integer; begin if KillWordProcessID[0] > 0 then begin ExeFileName := 'WINWORD.EXE'; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while ContinueLoop do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then begin for i:=1 to KillWordProcessID[0] do begin if KillWordProcessID[i] = FProcessEntry32.th32ProcessID then begin TerminateProcess(OpenProcess(PROCESS_TERMINATE, False, KillWordProcessID[i]), 0); Break; end; end; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; KillWordProcessID[0] := 0; end;
procedure KillWordProcess;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: Boolean;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
ExeFileName: string;
i: Integer;
begin
if KillWordProcessID[0] > 0 then
begin
ExeFileName := 'WINWORD.EXE';
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while ContinueLoop do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
begin
for i:=1 to KillWordProcessID[0] do
begin
if KillWordProcessID[i] = FProcessEntry32.th32ProcessID then
begin
TerminateProcess(OpenProcess(PROCESS_TERMINATE, False, KillWordProcessID[i]), 0);
Break;
end;
end;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
KillWordProcessID[0] := 0;
end;