unit MainFrm;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TLHelp32, ComCtrls, ExtCtrls, Buttons, ImgList;const
PROCESS_TERMINATE=$0001;
type
TfrmMain = class(TForm)
lsvProcess: TListView;
pnlMain: TPanel;
stsMessage: TStatusBar;
lsiLargeIcon: TImageList;
lsiSmallIcon: TImageList;
spdLargeIcon: TSpeedButton;
spdSmallIcon: TSpeedButton;
spdList: TSpeedButton;
spdReport: TSpeedButton;
spdRefresh: TSpeedButton;
procedure spdLargeIconClick(Sender: TObject);
procedure spdSmallIconClick(Sender: TObject);
procedure spdListClick(Sender: TObject);
procedure spdReportClick(Sender: TObject);
procedure spdRefreshClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure lsvProcessDblClick(Sender: TObject);
private
{ Private declarations }
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
procedure DisplayHint(Sender: TObject);
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementation{$R *.DFM}procedure TfrmMain.DisplayHint(Sender: TObject);
begin
stsMessage.SimpleText := Application.Hint;
end;procedure TfrmMain.spdLargeIconClick(Sender: TObject);
begin
lsvProcess.ViewStyle:=vsIcon;
end;procedure TfrmMain.spdSmallIconClick(Sender: TObject);
begin
lsvProcess.ViewStyle:=vsSmallIcon;
end;procedure TfrmMain.spdListClick(Sender: TObject);
begin
lsvProcess.ViewStyle:=vsList;
end;procedure TfrmMain.spdReportClick(Sender: TObject);
begin
lsvProcess.ViewStyle:=vsReport;
end;procedure TfrmMain.spdRefreshClick(Sender: TObject);
var
ContinueLoop:BOOL;
NewItem : TListItem;
begin
lsvProcess.Items.Clear;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop)<>0 do
begin
NewItem:=lsvProcess.Items.add;
NewItem.Caption:=ExtractFileName(FProcessEntry32.szExeFile);
NewItem.subItems.Add(IntToHex(FProcessEntry32.th32ProcessID,4));
NewItem.subItems.Add(FProcessEntry32.szExeFile);
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;procedure TfrmMain.FormCreate(Sender: TObject);
begin
Application.OnHint := DisplayHint;
spdRefreshClick(Sender);
end;procedure TfrmMain.lsvProcessDblClick(Sender: TObject);
var
Ret : BOOL;
ProcessID : integer;
ProcessHndle : THandle;
begin
try
with lsvProcess do
begin
if MessageDlg('Do You Want To Terminate "'+ItemFocused.Caption+'"?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
ProcessID:=StrToInt('$'+ItemFocused.SubItems[0]);
ProcessHndle:=OpenProcess(PROCESS_TERMINATE,BOOL(0),ProcessID);
Ret:=TerminateProcess(ProcessHndle,0);
if Integer(Ret)=0 Then
MessageDlg('Can Not Terminate "'+ItemFocused.Caption+'"',mtInformation,[mbOk],0)
else
ItemFocused.Delete;
end;
end;
except
end;
end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TLHelp32, ComCtrls, ExtCtrls, Buttons, ImgList;const
PROCESS_TERMINATE=$0001;
type
TfrmMain = class(TForm)
lsvProcess: TListView;
pnlMain: TPanel;
stsMessage: TStatusBar;
lsiLargeIcon: TImageList;
lsiSmallIcon: TImageList;
spdLargeIcon: TSpeedButton;
spdSmallIcon: TSpeedButton;
spdList: TSpeedButton;
spdReport: TSpeedButton;
spdRefresh: TSpeedButton;
procedure spdLargeIconClick(Sender: TObject);
procedure spdSmallIconClick(Sender: TObject);
procedure spdListClick(Sender: TObject);
procedure spdReportClick(Sender: TObject);
procedure spdRefreshClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure lsvProcessDblClick(Sender: TObject);
private
{ Private declarations }
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
procedure DisplayHint(Sender: TObject);
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementation{$R *.DFM}procedure TfrmMain.DisplayHint(Sender: TObject);
begin
stsMessage.SimpleText := Application.Hint;
end;procedure TfrmMain.spdLargeIconClick(Sender: TObject);
begin
lsvProcess.ViewStyle:=vsIcon;
end;procedure TfrmMain.spdSmallIconClick(Sender: TObject);
begin
lsvProcess.ViewStyle:=vsSmallIcon;
end;procedure TfrmMain.spdListClick(Sender: TObject);
begin
lsvProcess.ViewStyle:=vsList;
end;procedure TfrmMain.spdReportClick(Sender: TObject);
begin
lsvProcess.ViewStyle:=vsReport;
end;procedure TfrmMain.spdRefreshClick(Sender: TObject);
var
ContinueLoop:BOOL;
NewItem : TListItem;
begin
lsvProcess.Items.Clear;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop)<>0 do
begin
NewItem:=lsvProcess.Items.add;
NewItem.Caption:=ExtractFileName(FProcessEntry32.szExeFile);
NewItem.subItems.Add(IntToHex(FProcessEntry32.th32ProcessID,4));
NewItem.subItems.Add(FProcessEntry32.szExeFile);
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;procedure TfrmMain.FormCreate(Sender: TObject);
begin
Application.OnHint := DisplayHint;
spdRefreshClick(Sender);
end;procedure TfrmMain.lsvProcessDblClick(Sender: TObject);
var
Ret : BOOL;
ProcessID : integer;
ProcessHndle : THandle;
begin
try
with lsvProcess do
begin
if MessageDlg('Do You Want To Terminate "'+ItemFocused.Caption+'"?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
ProcessID:=StrToInt('$'+ItemFocused.SubItems[0]);
ProcessHndle:=OpenProcess(PROCESS_TERMINATE,BOOL(0),ProcessID);
Ret:=TerminateProcess(ProcessHndle,0);
if Integer(Ret)=0 Then
MessageDlg('Can Not Terminate "'+ItemFocused.Caption+'"',mtInformation,[mbOk],0)
else
ItemFocused.Delete;
end;
end;
except
end;
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货