IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment lister les BPL/DLL qu'utilise mon appli ?


Sujet :

Langage Delphi

  1. #1
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut Comment lister les BPL/DLL qu'utilise mon appli ?
    Bonjour,

    Mon application Delphi est construite avec des BPL et des DLL.

    Dans l'application, j'aimerais pouvoir lister à l'utilisateur les BPL/DLL que l'application utilise.

    Avec le nom du paquet, le numéro de version et le chemin du bpl/dll, à la mode Delphi XE...A propos, Infos version

    Comment retrouver les dépendances de mon application en run ? (Un peu comme la fonction TDump en ligne de commande...)

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    J'ai essayé d'utiliser CreateSnapShotToolHelp sans succès.

    En faite j'arrive à récupérer tous les processus lancé.

    Lors que j'essai de récupérer les modules associé aux process, ça echoue.

    Voici le bout de code effectué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Uses
      PsAPI, TlHelp32;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      snapshotProcess: THandle;
      snapshotModule: THandle;
      ProcEntry: TProcessEntry32;
      moduleEntry: TModuleEntry32;
    begin
      Memo1.Lines.Clear;
      snapshotProcess := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
      if snapshotProcess <> INVALID_HANDLE_VALUE then
      begin
        ProcEntry.dwSize := SizeOf(ProcessEntry32);
        if (Process32First(snapshotProcess, ProcEntry)) then
        begin
          Memo1.Lines.Add(ProcEntry.szExeFile);
          while Process32Next(snapshotProcess, ProcEntry) do
          begin
            Memo1.Lines.Add(ProcEntry.szExeFile);
            snapshotModule:= CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST, ProcEntry.th32ProcessID);
            if snapshotModule <> INVALID_HANDLE_VALUE then
            begin
              moduleEntry.dwSize := SizeOf(TModuleEntry32);
              if Module32First(snapshotModule, moduleEntry) then
              begin
                Memo1.Lines.Add(moduleEntry.szExePath);
                while (Module32Next(snapshotModule, moduleEntry)) do
                  Memo1.Lines.Add(moduleEntry.szExePath);
              end;
            end;
            CloseHandle(snapshotModule);
          end;
        end;
      end;
      CloseHandle(snapshotProcess);
    end;

  4. #4
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    De plus, des personnes dise que CreateToolhelp32Snapshot ne fonctionne pas sur Win 64 bits.

    J'ai lancé l'appli sur WinXP 32 bits et Win7 64 bits, Pour l'instant même résultat.

  5. #5
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    En faisant des tests j'ai oublié de remplacer TH32CS_SNAPHEAPLIST par TH32CS_SNAPMODULE.

    Du coup je pense que ça fonctionne, je termine les tests je vous tiens au courant.

  6. #6
    Membre habitué

    Inscrit en
    Février 2005
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 356
    Points : 175
    Points
    175
    Par défaut
    Ca fonctionne.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2006, 18h12
  2. |VB6] Comment Lister les liens vers des fichiers d'une page web
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2005, 18h17
  3. Comment lister les exécutables actifs ?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 15/04/2004, 13h03
  4. [VB6] Comment lister les serveurs SQL d'un domaine ?
    Par WOLO Laurent dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/01/2004, 08h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo