知道一个正在运行的进程的名字,比如计算器:Calc.exe
杀死它的代码:
USES TLHelp32; //必须 Users 这个,FindProcessID 函数需要用到它。
{$R *.dfm}
function FindProcessID(s:string):integer;
var
found,find:boolean;
FSnapshotHandle:tHANDLE;
lppe:TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //CreateToolhelp32Snapshot函数得到进程快照
Find:=False;
lppe.dwSize := Sizeof(lppe); //初始化
found := Process32First(FSnapshotHandle, lppe); //Process32First 得到一个系统快照里第一个进程的信息
while found do
begin
if LowerCase(ExtractFileName(lppe.szExeFile))=LowerCase(s) then
begin
Result:=lppe.th32ProcessID; //找到进程返回ID
find:=true;
CloseHandle(FSnapshotHandle);
exit;
end;
found := Process32Next(FSnapshotHandle, lppe);
end;
CloseHandle(FSnapshotHandle);
if find=False then
Result:=0; //找不到进程返回0
end;
procedure TForm2.Button1Click(Sender: TObject);
var
ProH: THandle;
ProcID: DWord;
begin
ProcID := FindProcessID(Edit1.Text);
ProH := OpenProcess(PROCESS_ALL_ACCESS, True, ProcID);
TerminateProcess(ProH, 0);
end;