Voire tout les processus en cours et termine

Description

voire touts les processus en cours et peut terminé chaque processus

Source / Exemple :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls,Tlhelp32;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListView1: TListView;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ListView1ColumnClick(Sender: TObject; Column: TListColumn);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
implementation

{$R *.DFM}

Function HexToInt(s:string):integer;
var Num,k:integer;
begin
Num:=0;
for k:=1 to length(s) do
begin
if (s[k]='F')or(s[k]='f') then Num:=Num*16+15;
if (s[k]='E')or(s[k]='e') then Num:=Num*16+14;
if (s[k]='D')or(s[k]='d') then Num:=Num*16+13;
if (s[k]='C')or(s[k]='c') then Num:=Num*16+12;
if (s[k]='B')or(s[k]='b') then Num:=Num*16+11;
if (s[k]='A')or(s[k]='a') then Num:=Num*16+10;
if (s[k]='9') then Num:=Num*16+9;
if (s[k]='8') then Num:=Num*16+8;
if (s[k]='7') then Num:=Num*16+7;
if (s[k]='6') then Num:=Num*16+6;
if (s[k]='5') then Num:=Num*16+5;
if (s[k]='4') then Num:=Num*16+4;
if (s[k]='3') then Num:=Num*16+3;
if (s[k]='2') then Num:=Num*16+2;
if (s[k]='1') then Num:=Num*16+1;
if (s[k]='0') then Num:=Num*16+0;
end;
result:=Num;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;s:string;FSnapshotHandle:THandle;
  FProcessEntry32: TProcessEntry32;
  ContinueLoop:boolean;
begin
i:=1;
ListView1.Items.Clear;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
s:=inttostr(i);ListView1.Items.Add.Caption:=s;

s:=inttohex(FProcessEntry32.th32ProcessID,8);
ListView1.Items.Item[ListView1.Items.Count-1].SubItems.Add(s);

s:=FProcessEntry32.szExeFile;
ListView1.Items.Item[ListView1.Items.Count-1].SubItems.Add(s);

s:=inttohex(FProcessEntry32.cntThreads,4);
ListView1.Items.Item[ListView1.Items.Count-1].SubItems.Add(s);

s:=inttohex(FProcessEntry32.th32ParentProcessID,4);
ListView1.Items.Item[ListView1.Items.Count-1].SubItems.Add(s);

s:=inttohex(FProcessEntry32.pcPriClassBase,4);
ListView1.Items.Item[ListView1.Items.Count-1].SubItems.Add(s);

i:=i+1;
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;

procedure treeparnum;
begin
//
end;

procedure treeparhandle;
begin
//form1.ListView1.Arrange(arAlignTop);
end;

procedure treeparname;
begin
//form1.ListView1.Arrange(arAlignTop);
end;

procedure treeparshow;
begin
//form1.ListView1.Arrange(arAlignTop);
end;

procedure TForm1.ListView1ColumnClick(Sender: TObject;Column: TListColumn);
begin
if Column.Index=0 then
treeparnum
else
if Column.Index=1 then
treeparhandle
else
if Column.Index=2 then
treeparname
else
treeparshow;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Button1Click(nil);
end;

procedure TForm1.Button2Click(Sender: TObject);
var HProsses:THandle;ProssesID:DWord;ExitCodes:DWord;
begin
ProssesID:=hextoint(ListView1.Selected.SubItems[0]);
HProsses:=openprocess(PROCESS_ALL_ACCESS,false,ProssesID);
if not GetExitCodeProcess(HProsses,ExitCodes) then
messagebox(handle,'Not ExitCode','ERROR',0);

if (TerminateProcess(HProsses,ExitCodes)) then
ListView1.Selected.Delete
else
messagebox(handle,'Not Termined','ERROR',0);
end;

end.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.