unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TlHelp32, ComCtrls; type TForm1 = class(TForm) btn1: TButton; btn2: TButton; lv1: TListView; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type _PROCESSINFO = record ProcessName: string; ProcessID: DWORD; end; var Form1: TForm1; ProcessInfo: array[0..49] of _PROCESSINFO; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); var pe32: PROCESSENTRY32; HwndProcess: LongWord; bMore: BOOL; count: Integer; temp: TListItem; begin FillChar(pe32,SizeOf(pe32),0); pe32.dwSize:= SizeOf(pe32); HwndProcess:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if HwndProcess = INVALID_HANDLE_VALUE then begin ShowMessage('未能获得进程快照!'); Exit; end; bMore:= Process32First(HwndProcess,pe32); count:=0; lv1.Clear; while bMore do begin ProcessInfo[count].ProcessName:= StrPas(pe32.szExeFile); ProcessInfo[count].ProcessID:= pe32.th32ProcessID; temp:= lv1.Items.Add; temp.Caption:= ProcessInfo[count].ProcessName; temp.SubItems.Add(IntToStr(ProcessInfo[count].ProcessID)); Inc(count); bMore:= Process32Next(HwndProcess,pe32); end; CloseHandle(HwndProcess); end; procedure TForm1.btn2Click(Sender: TObject); var SelectIndex: Integer; bRs: BOOL; hProcess: THandle; i: Integer; begin SelectIndex:= lv1.Selected.Index; hProcess:= OpenProcess(PROCESS_ALL_ACCESS,False,ProcessInfo[SelectIndex].ProcessID); if hProcess <> 0 then begin bRs:= TerminateProcess(hProcess,0); if not(bRs) then begin ShowMessage('终止进程失败!'); end end; for i := 0 to Length(ProcessInfo) - 1 do begin with ProcessInfo[i] do begin ProcessName:= ''; ProcessID:=0; end; end; Sleep(500); btn1.Click; end; end.做个记录