//Get All Process
procedure TForm1.ToolButton1Click(Sender: TObject);
var
ProcessInfo : tagPROCESSENTRY32;
Handle : THandle;
Node : TListItem;
i : Integer;
begin
i :=1;
ListView.Items.Clear ;
Handle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) ;
ProcessInfo.dwSize := SizeOf(ProcessInfo);
if Process32First(Handle,ProcessInfo) then
begin
Node := ListView.Items.Add;
Node.Caption := IntToHex(ProcessInfo.th32ProcessID,8);
Node.SubItems.Add(IntToStr(ProcessInfo.th32ProcessID));
Node.SubItems.Add(ProcessInfo.szExeFile);
Node.SubItems.Add(IntToStr(ProcessInfo.cntUsage));
Node.SubItems.Add(IntToHex(ProcessInfo.th32DefaultHeapID,8));
Node.SubItems.Add(IntToHex(ProcessInfo.th32ModuleID,8));
Node.SubItems.Add(IntToStr(ProcessInfo.cntThreads));
Node.SubItems.Add(IntToHex(ProcessInfo.th32ParentProcessID,8));
Node.SubItems.Add(IntToStr(ProcessInfo.pcPriClassBase));
ProcId[0] := ProcessInfo.th32ProcessID ;
end;
while Process32Next(Handle,ProcessInfo) do
begin
Node := ListView.Items.Add;
Node.Caption := IntToHex(ProcessInfo.th32ProcessID,8);
Node.SubItems.Add(IntToStr(ProcessInfo.th32ProcessID));
ProcId[i] := ProcessInfo.th32ProcessID ;
Node.SubItems.Add(ProcessInfo.szExeFile);
Node.SubItems.Add(IntToStr(ProcessInfo.cntUsage));
Node.SubItems.Add(IntToHex(ProcessInfo.th32DefaultHeapID,8));
Node.SubItems.Add(IntToHex(ProcessInfo.th32ModuleID,8));
Node.SubItems.Add(IntToStr(ProcessInfo.cntThreads));
Node.SubItems.Add(IntToHex(ProcessInfo.th32ParentProcessID,8));
Node.SubItems.Add(IntToStr(ProcessInfo.pcPriClassBase));
i := i+1;
end;
end;
//Kill Process
procedure TForm1.ToolButton2Click(Sender: TObject);
var
Handle : THandle;
begin
if MessageDlg('是否要结束进程?',mtWarning,[mbYes,mbNo],0)=mrYes then
begin
if ListView.Selected <> nil then
begin
Handle := OpenProcess(PROCESS_TERMINATE,False,ProcId[ListView.Selected.Index]);
TerminateProcess(Handle,0);
end;
end;
end;