Code source
Code source

  Présentation
  Unités exemple gratuites
  Unités commercialisées
  Conditions d'utilisation
  Comment acheter
  Vendez vos codes
Unités commercialisées

  LRJ_DosDevice
  LRJ_FileMapped
  LRJ_ModifDateTime
  LRJ_ShellUtils
  LRJ_TokenAPI
  LRJ_WinACL
  LRJ_WinBrowseDialog
  LRJ_WinCreateProcess
  LRJ_WinDesktop
  LRJ_WinDirectories
  LRJ_WinDocRecents
  LRJ_WinDrives
  LRJ_WinFavorisWeb
  LRJ_WinFiles
  LRJ_WinIconNotifArea
  LRJ_WinInternetShortcut
  LRJ_WinMenuFolder
  LRJ_WinModule
  LRJ_WinNetApi
  LRJ_WinNetLocalGroups
  LRJ_WinNetUsers
  LRJ_WinPrivileges
  LRJ_WinProcess
  LRJ_WinRecycleBin
  LRJ_WinRegion
  LRJ_WinRegAppPath
  LRJ_WinShellLink
  LRJ_WinShellUI
  LRJ_WinSID
  LRJ_WinStation
  LRJ_WinTokenGroups
  LRJ_WinTrackChangeDir
  LRJ_WinVolumes
  LRJ_WinWorkingSet

   Accueil | GlobalDesk | Code source Delphi | Développements | Votre compte | Contact   

Code source : unité LRJ_WinProcess




      
Description : cette unité contient les objets LRJ_TProcessMemoryInfo, LRJ_TProcess et LRJ_TProcessList. LRJ_TProcessMemoryInfo contient des informations générales sur la mémoire utilisée par un processus, LRJ_TProcess permet d'ouvrir un processus et contient les informations système sur le processus ouvert ainsi que la liste des modules ouverts par ce processus et LRJ_TProcessList contient la liste des processus ouverts dans une session Windows.

L'unité est livrée avec une application de démonstration ( voir description plus loin ) qui utilise les fonctionnalités des objets contenus dans l'unité. Les codes de l'application sont livrés avec l'unité pour illustrer comment utiliser les objets de cette unité. L'application de démonstration utilise les unités LRJ_GridsPlus, LRJ_WindowsPlus et LRJ_WinModule non livrées avec l'application.

L'unité LRJ_WinProcess met en oeuvre les fonctions de Windows suivantes :
             CloseHandle
EnumProcesses
GetProcessImageFileName
GetProcessMemoryInfo
OpenProcess
OpenProcessToken
QueryFullProcessImageName

Déclarations publiques de l'unité  I  Télécharger l'application de démonstration  I  Exemples d'utilisations

Utilise les unités : Windows, Classes, SysUtils, Types, LRJ_WindowsPlus, LRJ_ClassesPlus et LRJ_WinModule .

Version : 1.2 du 21.06.2009
Auteur : Laurent Hède
Copyright : LorenJo

Nombre de lignes : 666

Réalisée sous : Delphi 6

Systèmes compatibles : NT4, 2000, XP, Vista, serveurs

Prix : 136.00 € H.T.

Déclarations publiques de l'unité :

unit LRJ_WinProcess;

interface
                    uses
                    Windows,
                    Classes,
                    SysUtils,
                    Types,
                    LRJ_ClassesPlus,
                    LRJ_WindowsPlus,
                    LRJ_WinModule;

function LRJ_EnumProcesses(const lpidProcess: pointer; const cb: DWORD; var cbNeeded: DWORD): boolean;
function LRJ_QueryFullProcessImageName(const hProcess: THandle; const dwFlags: DWORD; const lpExeName: PChar;
                                                                   var lpdwSize: DWORD): boolean;
function LRJ_GetProcessImageFileName(const hProcess: THandle; const lpImageFileName: PChar;
                                                                   const nSize: DWORD):  DWORD;

   .........

function LRJ_GetProcessMemoryInfo(const hProcess: THandle; const ppsmemCounters: LRJ_PPROCESS_MEMORY_COUNTERS): boolean;
function LRJ_GetProcessMemoryInfoEx(const hProcess: THandle; const ppsmemCounters: LRJ_PPROCESS_MEMORY_COUNTERS_EX): boolean;

   .........

    //------------OBJET----------------------------
LRJ_TProcessMemoryInfo = class(TObject)
   .........
   property PageFaultCount: DWORD read GetPageFaultCount;
   property PeakWorkingSetSize: DWORD read GetPeakWorkingSetSize;
   property WorkingSetSize: DWORD read GetWorkingSetSize;
   property QuotaPeakPagedPoolUsage: DWORD read  GetQuotaPeakPagedPoolUsage;
   property QuotaPagedPoolUsage: DWORD read GetQuotaPagedPoolUsage;
   property QuotaPeakNonPagedPoolUsage: DWORD read GetQuotaPeakNonPagedPoolUsage;
   property QuotaNonPagedPoolUsage: DWORD read GetQuotaNonPagedPoolUsage;
   property PagefileUsage: DWORD read GetPagefileUsage;
   property PeakPagefileUsage: DWORD read GetPeakPagefileUsage;
   property PrivateUsage: DWORD read GetPrivateUsage;
   end;//-----------FIN--------------------------


LRJ_TTypeProcess = (LRJ_ttp_Unknow , LRJ_ttp_System, LRJ_ttp_User);


    //------------OBJET----------------------------
LRJ_TProcess = class(TObject)
   .........
   procedure CloseProcess;
   function Open: boolean;
   function CountModule: integer;
   function IsOpen: boolean;
   property ProcessID: DWORD read GetProcessID write SetProcessID;
   property Name: string read GetName;
   property FileName: string read GetFileName;
   property AccessRight: DWORD read MODesiredAccess write SetDesiredAccess;
   property Handle: THandle read GetHandle;
   property InheritableHandle: boolean read MOInheritableHandle write SetInheritableHandle;
   property OpenErrorCode: DWORD read MOOpenErrorCode;
   property MemoryInfo: LRJ_TProcessMemoryInfo Read GetMemoryInfo;
   property TypeProcess: LRJ_TTypeProcess read GetTypeProcess;
   property ModuleList: LRJ_TProcModuleList read GetModuleList;
   property Modules[const Aindex: integer]: LRJ_TProcModule read GetModule;
   end;//-----------FIN--------------------------


    //------------OBJET----------------------------
LRJ_TProcessList = class(TObject)
   .........
   procedure Refresh;
   function Count: integer;
   function IndexOfName(const AFileName: string; const ATypeProcess: LRJ_TTypeProcess = LRJ_ttp_AllTypes): integer;
   function IndexOfFullFileName(const AFullFileName: string; const ATypeProcess: LRJ_TTypeProcess = LRJ_ttp_AllTypes): integer;
   property Processes[const index: integer]: LRJ_TProcess read GetProcess;
   end;//-----------FIN--------------------------


Application de démonstration

En sélectionnant un processus dans la TreeView, le nom complet du processus est chargée dans le TEdit 'Process select' et le informations sur le processus son chargé dans la grille située au-dessus de la TreeView.
Lorsqu'on ouvre un Item dans la TreeView, la liste des modules utilisés par le processus sélectionné est listée.


Exemples d'utilisations

Charger la liste des processus et des modules des processus dans une TreeView
var
  zProcess: LRJ_TProcess;
  zModule: LRJ_TProcModule;
  i, j: integer;
  zTN: TTreeNode;
  zTypeProcess: LRJ_TTypeProcess;
  zTypeProcessStr: string;
begin
TreeView1.Items.BeginUpdate;
MOProcessList.Refresh;
for i:=0 to MOProcessList.Count-1 do
  begin
  zProcess := MOProcessList.Processes[i];
  zProcess.Open;
  if zProcess.IsOpen then
    begin
    zTypeProcess := zProcess.TypeProcess;
    case zTypeProcess of
    LRJ_ttp_Unknow : zTypeProcessStr := 'Unknow';
    LRJ_ttp_System : zTypeProcessStr := 'System';
    LRJ_ttp_User : zTypeProcessStr := 'User';
    end;
    zTN := TreeView1.Items.AddObject(nil, zProcess.Name + '  (' + zTypeProcessStr + ')  (ID = ' +
                              IntToStr(zProcess.ProcessID) + ')', zProcess);
    end
  else
    begin
    zTN := TreeView1.Items.Add(nil, 'ERREUR - ' + LRJ_GetErrorString(zProcess.OpenErrorCode) + '  (ID = ' +
                              IntToStr(zProcess.ProcessID) + ')');
    end;
  for j:=0 to zProcess.CountModule-1 do
    begin
    zModule := zProcess.Modules[j];
    TreeView1.Items.AddChildObject(zTN, ExtractFileName(zModule.FileName), zModule);
    end;
  end;
TreeView1.Items.EndUpdate;
end;

Vous n'avez pas trouvé d'exemple répondant à votre problématique ?
Cliquez sur ce lien.


 Accueil | GlobalDesk | Code source Delphi | Développements | Votre compte | Contact 
Copyright © LorenJo 2000-2009    Notice légale