function TFormRunWiz.KillTasK(ExeFileName: String): Boolean; var ContinueLoop: Boolean; FSnap: THandle; FProcessEntry32: TProcessEntry32; begin Result := False; FSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0); if FSnap = -1 then begin MessageDLG('不能获得进程的句柄!',mtError,[mbOK],0); Exit; end; FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnap,FProcessEntry32); while ContinueLoop do begin if Trim(FProcessEntry32.szExeFile) = Trim(ExtractFileName(ExeFileName)) then Result := Boolean(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),FProcessEntry32.th32ProcessID),0)); ContinueLoop := Process32Next(FSnap,FProcessEntry32); end; end;
var
ContinueLoop: Boolean;
FSnap: THandle;
FProcessEntry32: TProcessEntry32;
begin Result := False;
FSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
if FSnap = -1 then
begin
MessageDLG('不能获得进程的句柄!',mtError,[mbOK],0);
Exit;
end;
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnap,FProcessEntry32); while ContinueLoop do
begin if Trim(FProcessEntry32.szExeFile) = Trim(ExtractFileName(ExeFileName)) then
Result := Boolean(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),FProcessEntry32.th32ProcessID),0));
ContinueLoop := Process32Next(FSnap,FProcessEntry32); end;
end;
有窗口HWND也简单。GetWindowThreadProcessId加OpenProcess加TerminateProcess就可以了。
知道文件名用楼上的方法。