Voire tout les processus en cours et termine

Soyez le premier à donner votre avis sur cette source.

Vue 5 020 fois - Téléchargée 688 fois

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

Ajouter un commentaire

Commentaires

HAFTARIFOUAD
Messages postés
256
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
6 janvier 2011
-
Salut ;-)

en premier je dit: bon courage trés bien ce code et bonne continuation.

Une petite idé à vous proposer: si vous arriver à faire la distinction entre les fichiers chargés par le système et les autres chargés par l'utilisateur ca sera encore mieux.
John Dogget
Messages postés
390
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
-
N'oublions pas de liberer le Handle alloué avec OpenProcess :)
Sinon, tu devrais indenter plus ton code pour le rendre plus sympa à lire.

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.