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_WinModule




      
Description : cette unité contient les objets LRJ_TProcModule et LRJ_TProcModuleList. LRJ_TProcModuleList contient la liste des objets LRJ_TProcModule qui encapsulent les modules utlisés par un processus. LRJ_TProcModule permet de connaître le nom et de lire certaines des informations du module sous-jacent.

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 et LRJ_WinProcess non livrées avec l'application.

L'unité LRJ_WinModule met en oeuvre les fonctions de Windows suivantes :
             EnumProcessModules
GetModuleFileNameEx
GetModuleInformation

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

Utilise les unités : Windows, LRJ_WindowsPlus et LRJ_ClassesPlus.

Version : 1 du 23.05.2009
Auteur : Laurent Hède
Copyright : LorenJo

Nombre de lignes : 353

Réalisée sous : Delphi 6

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

Prix : 80.00 € H.T.

Déclarations publiques de l'unité :

unit LRJ_WinModule;

interface

                    uses
                    Windows,
                    LRJ_WindowsPlus,
                    LRJ_ClassesPlus;

                    
function LRJ_GetModuleBaseName(const hProcess: THandle; const hModule: HMODULE; var AFileName: string): boolean;
function LRJ_EnumProcessModules(const hProcess: THandle; const lphModule: pointer; const cb: DWORD;
                                                              var cbNeeded: DWORD) : boolean;
function LRJ_GetModuleFileNameEx(const hProcess: THandle; const hModule: HMODULE; var Filename: string): boolean;

   .............

function LRJ_GetModuleInformation(const hProcess: THandle;const hModule: HMODULE; const lpmodinfo: LRJ_PMODULEINFO): boolean;

type                    

    //------------OBJET----------------------------
LRJ_TProcModule = class(TObject)
   .............
   property Handle: HMODULE read MOHandle;
   property ProcessHandle: THandle read MOProcessHandle;
   property FileName: string read GetFileName;
   property BaseOfDll: pointer read GetBaseOfDll;
   property SizeOfImage: DWORD read GetSizeOfImage;
   property EntryPoint: Pointer read GetEntryPoint;
   end;//-----------FIN--------------------------


   // Il faut passer un handle de processus ouvert avec les droits PROCESS_QUERY_INFORMATION et PROCESS_VM_READ
    //------------OBJET----------------------------
LRJ_TProcModuleList = class(TObject)
   .............
   procedure Refresh;
   function Count: integer;
   property ProcessHandle: THandle write SetProcessHandle;
   property Modules[const Aindex: integer]: LRJ_TProcModule read GetModule;
   end;//-----------FIN--------------------------


Application de démonstration

Le ComboBox processes contient la liste des processus dont la liste des modules est accessible.
En sélectionnant un processus dans le ComboBox, la liste est chargée avec les modules utilisés par le processus.
En cliquant sur une ligne correspondant à un module dans la liste, les informations disponibles avec la fonction GetModuleInformation sont affichées dans la grille.


Exemples d'utilisations

Charger la liste des modules d'un processus dont l'ID est contenu dans ComboBox1 dans ListBox1.
var
   zProcessID: Integer;
   i: integer;
   zModule: LRJ_TProcModule;
   zMaxWidth: integer;
begin
zMaxWidth := 0;
ClearProcess;
ListBox1.ItemIndex := -1;
if ComboBox1.ItemIndex < 0 then EXIT;
zProcessID := ExtractID(ComboBox1.Items[ComboBox1.ItemIndex]);
MOHandleProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, zProcessID);
MOModules := LRJ_TProcModuleList.Create;
MOModules.ProcessHandle := MOHandleProcess;
ListBox1.Items.BeginUpdate;
ListBox1.Clear;
ListBox1.Items.Capacity := MOModules.Count;
for i:=0 to MOModules.Count-1 do
  begin
  zModule := MOModules.Modules[i];
  ListBox1.Items.AddObject(zModule.FileName, zModule);
  zMaxWidth := Max(zMaxWidth, Canvas.TextWidth(zModule.FileName));
  end;
ListBox1.Items.EndUpdate;
ListBox1.ScrollWidth := zMaxWidth + 10;
if zMaxWidth > CtMaxWidthListBax then zMaxWidth := CtMaxWidthListBax;
ListBox1.Width := zMaxWidth + 10;
MOStrGridInfo.ClearCellsNotFixed;
ResizeStrGrid;
Label2.Caption := CTTexteBaseListeModules + ' (' + IntToStr(MOModules.Count) + ')';
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