unit ProcessListUnitApp; { Coder: Counterstrikewi , by maXbox 2014 - #locs:170 Compiled: Delphi 2007 , #sign:max: MAXBOX8: 7/19/2014 10:17:44 PM Website: www.delphibasics.info } interface //7uses //Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, //Dialogs, StdCtrls, ComCtrls, Menus, ProcessUnit; //type //TFormMain = class(TForm) var PM : TProcessManager; LV: TListView; afrm: TForm; KillProcessbyName1: TMenuItem; KillProcessbyPID1: TMenuItem; RefreshProcessList1: TMenuItem; procedure FormCreate(Sender: TObject); procedure KillProcessbyName1Click(Sender: TObject); procedure KillProcessbyPID1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure RefreshProcessList1Click(Sender: TObject); //private procedure ListProcesses; { Public declarations } //end; //var //FormMain: TFormMain; implementation //{$R *.dfm} procedure createProcessForm; var nc: TListColumn; mt: TMainMenu; Popup: TPopupMenu; begin afrm:= TForm.create(self); with afrm do begin Left:= 0; Top:= 0; Caption:= 'Aphex ProcessUnit Example by maXbox strikewi' ClientHeight:= 271 ClientWidth:= 634 Color:= clBtnFace Font.Charset:= DEFAULT_CHARSET Font.Color:= clWindowText Font.Height:= -11 Font.Name:= 'Tahoma' Font.Style:= [] OldCreateOrder:= False //OnCreate:= @FormCreate; OnDestroy:= @FormDestroy; PixelsPerInch:= 96 Show; end; Popup:= TPopupMenu.create(afrm) LV:= TListView.create(self); with lv do begin parent:= afrm; SetBounds(0,0,634,271) Align:= alClient nc:= columns.add nc.Caption:= 'EXE Path' nc.Width:= 400 nc:= columns.add nc.Caption:= 'PID' nc.Width:= 70 nc:= columns.add nc.Caption:= 'Thread' nc.Width:= 70 nc:= columns.add nc.Caption:= 'Priority' nc.Width:= 70 RowSelect:= True PopupMenu:= Popup SortType:= stText gridlines:= true; ViewStyle:= vsReport Show; end; //mt:= TMainMenu.Create(afrm) //Popup.parent:= afrm; RefreshProcessList1:= TMenuItem.Create(popup) with RefreshProcessList1 do begin //parent; popup.Items.Add(RefreshProcessList1); Caption:= 'Refresh Process List' OnClick:= @RefreshProcessList1Click end; KillProcessbyName1:= TMenuItem.create(popup) with KillProcessbyName1 do begin popup.Items.Add(KillProcessbyName1); Caption:= 'Kill Process by Name' OnClick:= @KillProcessbyName1Click end; KillProcessbyPID1:= TMenuItem.create(popup) with KillProcessbyPID1 do begin popup.Items.Add(KillProcessbyPID1); Caption:= 'Kill Process by PID' OnClick:= @KillProcessbyPID1Click end end; procedure ListProcesses; var C : Integer; CD: TStringArray; begin LV.Clear; PM.Free; PM:= TProcessManager.Create; PM.ListProcesses; for C:= 0 to PM.Count do begin with LV.Items.Add do begin CD:= PM.ExePathList; Caption:= CD[C]; CD:= PM.PIDList; SubItems.Add(CD[C]); CD:= PM.ThreadList; SubItems.Add(CD[C]); CD:= PM.PriorityList; SubItems.Add(CD[C]); //SubItems.Add(PM.PIDList[C]); //SubItems.Add(PM.ThreadList[C]); //SubItems.Add(PM.PriorityList[C]); end; end; end; procedure FormCreate(Sender: TObject); begin PM:= TProcessManager.Create; ListProcesses; end; procedure FormDestroy(Sender: TObject); begin PM.Free; end; procedure KillProcessbyName1Click(Sender: TObject); begin PM.KillProcessByExePath(LV.Selected.Caption); ListProcesses; end; procedure KillProcessbyPID1Click(Sender: TObject); begin PM.KillProcessByPID(LV.Selected.SubItems[0]); ListProcesses; end; procedure RefreshProcessList1Click(Sender: TObject); begin ListProcesses; writeln('Refresh ListProcesses') end; begin createProcessForm; FormCreate(self); writeln(botostr(IsPortAvailable(1))); //test bed with TComSelectForm.Create(self) do begin Showmodal; free; end; end. //Doc //Ref closure {Columns = < item Caption = 'EXE' Width = 400 end item Caption = 'PID' Width = 70 end item Caption = 'Thread' Width = 70 end item Caption = 'Priority' Width = 70 end:>}