{$R *.dfm}
procedure Search(Strings:TStrings);
var
Snap:THandle;
RB:Boolean;
PE:TProcessEntry32;
begin
if Strings=nil then
Exit;
snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if snap = -1 then Exit;
try
PE.dwSize:=SizeOf(TProcessEntry32);
RB:=Process32First(snap,PE);
while RB do
begin
Strings.AddObject(PE.szExeFile,Pointer(PE.th32ProcessID));
PE.dwSize:=SizeOf(TProcessEntry32);
RB:=Process32Next(snap,PE);
end;
finally
CloseHandle(snap);
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
Search(ListBox1.Items);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
H:THandle;
R:Cardinal;
begin
H:=OpenProcess(PROCESS_TERMINATE,True,LongInt(ListBox1.Items.Objects[ListBox1.ItemIndex]));
R:=0;
TerminateProcess(H,R);
CloseHandle(H);
end;
end.
关键的:
procedure TForm1.Button1Click(Sender: TObject);
var
H:THandle;
R:Cardinal;
begin
H:=OpenProcess(PROCESS_TERMINATE,True,LongInt(ListBox1.Items.Objects[ListBox1.ItemIndex]));
R:=0;
TerminateProcess(H,R);
CloseHandle(H);
end;
其中ListBox1.Items.Objects[ListBox1.ItemIndex]是在遍历进程时存放的ProcessID
杀进程:
procedure KilAPP(AHandle:Longint);
var
dwThreadId,dwProcessId:Dword;
hProcess:Thandle;
begin
dwThreadId := GetWindowThreadProcessId(AHandle,@dwProcessId);
hProcess:=OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessId);
if hProcess<>NULL then
TerminateProcess(hProcess,0);
{$R *.dfm}
procedure Search(Strings:TStrings);
var
Snap:THandle;
RB:Boolean;
PE:TProcessEntry32;
begin
if Strings=nil then
Exit;
snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if snap = -1 then Exit;
try
PE.dwSize:=SizeOf(TProcessEntry32);
RB:=Process32First(snap,PE);
while RB do
begin
Strings.Add(PE.szExeFile);
PE.dwSize:=SizeOf(TProcessEntry32);
RB:=Process32Next(snap,PE);
end;
finally
CloseHandle(snap);
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Search(ListBox1.Items);
end;