找到该进程的id;
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
TerminateProcess
能不能多给点代码!我有些看不明白!!!!谢谢!!!
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.
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.