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 :

Détecter le nombre d'instances d'un programme.


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut Détecter le nombre d'instances d'un programme.
    Bonsoir amis Delphistes

    Mon application peut être ouverte plusieurs fois mais à la fermeture, elle arrête des processus qui doivent rester utilisables par les instances restant ouvertes.

    Je voudrais donc compter le nombre d'instances en cours pour n'arrêter les processus que lors de la fermeture de la dernière instance de mon programme.

    Quelle fonction me permet de compter le nombre d'instances de mon application ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 114
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 114
    Par défaut
    Bonsoir.
    Citation Envoyé par defluc Voir le message
    Quelle fonction me permet de compter le nombre d'instances de mon application ?
    Documente-toi sur CreateToolhelp32Snapshot, qui liste tous les processus qui tournent sur la machine.
    Après, t'auras plus qu'à compter les tiens,

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 923
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 923
    Par défaut
    Comme dit Jipété, tu peux énumérer les processus.

    Tu peux aussi implémenter un sémaphore qui s'incrémentera à chaque appel ou tout simplement utiliser un mutex qui ne sera effectivement libéré que lorsque la dernière application y accédant sera fermée.

  4. #4
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    J'ai préféré créer une fonction utilisant CreateToolhelp32Snapshot comme suggéré par Jipété.
    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
    function CountInstances(ApplicName : string): Integer;
    var
      ProcessList : TProcessentry32;
      HndProcess : Thandle;
      Next : Boolean;
    begin
       Next := True;
       Result := 0;
       ProcessList.dwSize := sizeof(ProcessList);  //  Récuperation de la liste des process
       HndProcess := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
       if (HndProcess <> INVALID_HANDLE_VALUE) then
       begin
         Process32First(HndProcess, ProcessList);
         while Next do
         begin
           if Uppercase(ExtractFileName(ProcessList.szExeFile)) =
              UpperCase(ApplicName) then Inc(Result);
           Next := Process32Next(HndProcess, ProcessList);
         end;
       end;
       CloseHandle(HndProcess);
    end;
    Merci à tous deux et bon week end;

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

Discussions similaires

  1. 2eme instance d'un programme
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 25/04/2007, 20h58
  2. [FAQ] une seule instance de mon programme
    Par kacedda dans le forum C#
    Réponses: 6
    Dernier message: 01/02/2007, 13h37
  3. Réponses: 1
    Dernier message: 21/10/2006, 09h29
  4. [VB.NET] Instance d'un programme
    Par olbi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/07/2006, 14h30
  5. Nombre de Threads d'un programme
    Par c-ve dans le forum Delphi
    Réponses: 2
    Dernier message: 18/05/2006, 14h59

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