找到该进程的id;
BOOL TerminateProcess(
  HANDLE hProcess, // handle to the process
  UINT uExitCode   // exit code for the process
);

解决方案 »

  1.   

    枚举所有进程。得到那个在列表框中选中的进程ID
    TerminateProcess
      

  2.   

    yansea(思宏) 谢谢了
    能不能多给点代码!我有些看不明白!!!!谢谢!!!
      

  3.   

    找了一个枚举进程、线程的例子,你看看;
    unit MainForm;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      TlHelp32, StdCtrls, ComCtrls, ExtCtrls;type
      TfrmMain = class(TForm)
        pnlInfo: TPanel;
        lvThreads: TListView;
        Splitter1: TSplitter;
        pnlButtons: TPanel;
        btnRefresh: TButton;
        btnClose: TButton;
        lvProcs: TListView;
        procedure btnRefreshClick(Sender: TObject);
        procedure lvProcsSelectItem(Sender: TObject; Item: TListItem;
          Selected: Boolean);
        procedure btnCloseClick(Sender: TObject);
      private
        procedure FillThreadList(ProcID:Integer);
      public
      end;var
      frmMain: TfrmMain;implementation{$R *.DFM}
    procedure TfrmMain.FillThreadList(ProcID: Integer);
    var
      hSnapshot:THandle;
      ThreadEntry:TThreadEntry32;0D
      RetVal:Bool;
      LvItem:TListItem;
    begin
        lvThreads.Items.Clear;
    0A    hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD,GetCurrentProcessId);
        ThreadEntry.dwSize := Sizeof(ThreadEntry);
        RetVal := Thread32First(hSnapshot,ThreadEntry);
        while RetVal do
        begin
          if ThreadEntry.th32OwnerProcessID = Integer(ProcID) then
          begin
            LvItem := lvThreads.Items.Add;
            LvItem.Data := Pointer((ThreadEntry.th32ThreadID));
            LvItem.Caption := IntToStr(ThreadEntry.th32ThreadID);
          end;
          RetVal := Thread32Next(hSnapshot,ThreadEntry);
        end;
        CloseHandle(hSnapshot);
    end;procedure TfrmMain.btnRefreshClick(Sender: TObject);
    var
      hSnapshot:THandle;
      ProcEntry:TProcessEntry32;0D
      RetVal:Bool;
      LvItem:TListItem;
      TvNode:TTreeNode;
      ThreadList:TList;
    begin
      lvProcs.Items.Clear;
      hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD,GetCurrentProcessId);
      ProcEntry.dwSize := Sizeof(ProcEntry);
      RetVal := Process32First(hSnapshot,ProcEntry);
      while RetVal do
      begin
       LvItem :=lvProcs.Items.Add;
       LvItem.Caption :=(ProcEntry.szExeFile);
       LvItem.SubItems.Add(IntToStr(ProcEntry.th32ProcessID));0D
       LvItem.SubItems.Add(IntToStr(ProcEntry.th32ParentProcessID));
       LvItem.SubItems.Add(IntToStr(ProcEntry.cntThreads));
    0A   LvItem.Data:=(Pointer(ProcEntry.th32ProcessID));
       RetVal := Process32Next(hSnapshot,ProcEntry);
      end;
      CloseHandle(hSnapShot);
    0Aend;procedure TfrmMain.lvProcsSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    begin
      if Selected then
      begin
        FillThreadList(Integer(Item.Data));
      end;
    end;procedure TfrmMain.btnCloseClick(Sender: TObject);
    begin
      Close;
    end;
    end.
      

  4.   

    找了一个枚举进程、线程的例子,你看看;
    unit MainForm;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      TlHelp32, StdCtrls, ComCtrls, ExtCtrls;type
      TfrmMain = class(TForm)
        pnlInfo: TPanel;
        lvThreads: TListView;
        Splitter1: TSplitter;
        pnlButtons: TPanel;
        btnRefresh: TButton;
        btnClose: TButton;
        lvProcs: TListView;
        procedure btnRefreshClick(Sender: TObject);
        procedure lvProcsSelectItem(Sender: TObject; Item: TListItem;
          Selected: Boolean);
        procedure btnCloseClick(Sender: TObject);
      private
        procedure FillThreadList(ProcID:Integer);
      public
      end;var
      frmMain: TfrmMain;implementation{$R *.DFM}
    procedure TfrmMain.FillThreadList(ProcID: Integer);
    var
      hSnapshot:THandle;
      ThreadEntry:TThreadEntry32;0D
      RetVal:Bool;
      LvItem:TListItem;
    begin
        lvThreads.Items.Clear;
    0A    hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD,GetCurrentProcessId);
        ThreadEntry.dwSize := Sizeof(ThreadEntry);
        RetVal := Thread32First(hSnapshot,ThreadEntry);
        while RetVal do
        begin
          if ThreadEntry.th32OwnerProcessID = Integer(ProcID) then
          begin
            LvItem := lvThreads.Items.Add;
            LvItem.Data := Pointer((ThreadEntry.th32ThreadID));
            LvItem.Caption := IntToStr(ThreadEntry.th32ThreadID);
          end;
          RetVal := Thread32Next(hSnapshot,ThreadEntry);
        end;
        CloseHandle(hSnapshot);
    end;procedure TfrmMain.btnRefreshClick(Sender: TObject);
    var
      hSnapshot:THandle;
      ProcEntry:TProcessEntry32;0D
      RetVal:Bool;
      LvItem:TListItem;
      TvNode:TTreeNode;
      ThreadList:TList;
    begin
      lvProcs.Items.Clear;
      hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD,GetCurrentProcessId);
      ProcEntry.dwSize := Sizeof(ProcEntry);
      RetVal := Process32First(hSnapshot,ProcEntry);
      while RetVal do
      begin
       LvItem :=lvProcs.Items.Add;
       LvItem.Caption :=(ProcEntry.szExeFile);
       LvItem.SubItems.Add(IntToStr(ProcEntry.th32ProcessID));0D
       LvItem.SubItems.Add(IntToStr(ProcEntry.th32ParentProcessID));
       LvItem.SubItems.Add(IntToStr(ProcEntry.cntThreads));
    0A   LvItem.Data:=(Pointer(ProcEntry.th32ProcessID));
       RetVal := Process32Next(hSnapshot,ProcEntry);
      end;
      CloseHandle(hSnapShot);
    0Aend;procedure TfrmMain.lvProcsSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    begin
      if Selected then
      begin
        FillThreadList(Integer(Item.Data));
      end;
    end;procedure TfrmMain.btnCloseClick(Sender: TObject);
    begin
      Close;
    end;
    end.