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 :

Semaphore sous Delphi


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Semaphore sous Delphi
    Bonjour,

    Je reprend un existant et j'ai un probleme de compréhension dans une unité il (l'ancien programmeur) empeche l'application de se lancer deux fois il utilise cette fonction

    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
     function FindAppSemaphore(const semaphoreName: string;
     const winName: string): boolean;
    var
     hS: THandle;
     hPrevWnd: HWND;
    begin
     Result := False;
     hS := CreateSemaphore(nil, 0, 1, pchar(semaphoreName));
     if (hS > 0) and (GetLastError = ERROR_ALREADY_EXISTS) then
     begin
      CloseHandle(hS);
      hPrevWnd := FindWindow(nil, pchar(winName));
      if (hPrevWnd > 0) then
      begin
       PostMessage(hPrevWnd, WM_SECONDLAUNCH, 0, 0);
       SetForegroundWindow(hPrevWnd);
       Result := True;
      end;
     end;
    end;
    Je ne comprends pas bien cette fonction, est pourquoi il utilise un PostMessage.
    Pour information ensuite l'utilisation de la méthode est fait comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    initialization
      if (FindAppSemaphore('semaphoreName', ProductName + ' ' + ProductVersion)) then
          begin
            halt;
          end;
    finalization
    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Le postmessage est pour dire à l'application déjà lancée de se mettre au premier plan quand on lance une deuxième fois l'appli.

Discussions similaires

  1. Corba sous Delphi et ORB alternatif
    Par Inpriser dans le forum CORBA
    Réponses: 4
    Dernier message: 18/08/2003, 18h42
  2. retrouver les compsants FASTNET sous Delphi 7
    Par fandor7 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/06/2003, 18h11
  3. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  4. calcul sous delphi
    Par djedje-08 dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2003, 17h39
  5. Réponses: 4
    Dernier message: 27/03/2002, 11h03

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