Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3033 connectés 

  FORUM HardWare.fr
  Programmation

  Windows : comment interdire de lancer 2 fois un prog (en C ou autre)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Windows : comment interdire de lancer 2 fois un prog (en C ou autre)

n°14668
darthbob
www.laprise.org
Posté le 16-02-2001 à 16:27:46  profilanswer
 

tout est dans le sujet


---------------
<a href="http://www.laprise.org">La prise</a> : mets les doigts dedans !
mood
Publicité
Posté le 16-02-2001 à 16:27:46  profilanswer
 

n°14670
JWhy
je peux plier (héhé)
Posté le 16-02-2001 à 16:32:05  profilanswer
 

en delphi, dans ton .DPR, tu ajoutes:

Citation :


var
  FSemaphore: THandle;
begin
  {Only allow one instance of this program to run}
  FSemaphore:= CreateSemaphore(nil, 0, 1, 'LeNomDuProgramme' );
  if ((FSemaphore<>0) and (GetLastError=ERROR_ALREADY_EXISTS)) then
  begin
    CloseHandle(FSemaphore);
    Halt(0);
  end;
  Application.Initialize;
  Application.Run;
end.
 


 
c'est une API windows  , donc j'imagine que tu trouveras la correspondance dans le langage qui te convient !

 

--Message édité par JWhy--


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°14672
darthbob
www.laprise.org
Posté le 16-02-2001 à 16:39:06  profilanswer
 

Trop fort JWhy !
 
J'ai testé avec Delphi, c'est nickel
 
le problème est qu'il faut que j'ajoute ça dans un prog Powerbuilder...
 
Si tu as une idée (appel Dll ou autre...)


---------------
<a href="http://www.laprise.org">La prise</a> : mets les doigts dedans !
n°14673
JWhy
je peux plier (héhé)
Posté le 16-02-2001 à 16:45:09  profilanswer
 

Ouaip, si tu ne peux pas faire des appels aux API windows avec PB, il ne te reste pas trop de choix... il faut en effet que tu externalises l'appel a la fonction: dll, com, etc ...
bonne chance ;)


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°14705
BifaceMcLe​OD
The HighGlandeur
Posté le 16-02-2001 à 22:33:45  profilanswer
 

Normalement, en API Windows pure, 2 des paramètres du WinMain s'appellent "hInstance" et "hPrevInstance", tous deux de type HINSTANCE. Evidemment, dans ce cas, il suffit de tester la valeur de hPrevInstance. Si elle est non nulle, c'est qu'il existe déjà une autre instance de ce programme en mémoire.
 
Problème : la plupart des outils de dev Windows masquent le WinMain...

n°14708
gilou
Modérateur
Modzilla
Posté le 16-02-2001 à 22:55:08  profilanswer
 

Ca marche plus tout a fait comme ca je crois, il me semble que sur certaines versions recentes de Windows, hPrevInstance est a 0 systematiquement et qu'il faut tester ca autrement.
Il doit y avoir des articles/tips dans le wddj a ce sujet.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°14712
gilou
Modérateur
Modzilla
Posté le 16-02-2001 à 23:18:55  profilanswer
 

D'ailleurs, c'est dans la doc de WinMain:
 
hPrevInstance
 
[in] Handle to the previous instance of the application. For a Win32-based application, this parameter is always NULL.  
 
If you need to detect whether another instance already exists, create a uniquely named mutex using the CreateMutex function. CreateMutex will succeed even if the mutex already exists, but the GetLastError function will return ERROR_ALREADY_EXISTS. This indicates that another instance of your application exists, because it created the mutex first.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°14858
darthbob
www.laprise.org
Posté le 18-02-2001 à 21:48:28  profilanswer
 

gilou > je confirme que la valeur de [in] est forcé à NULL. :sarcastic:  
 
J'ai donc résolu le problème en construisant une foonction en C avec création de sémaphore (merci JWhy ;) )
 
Je l'appelle depuis mon prog en Powerbuilder et :
 
ça marche !  :hap::hap::hap::hap:


---------------
<a href="http://www.laprise.org">La prise</a> : mets les doigts dedans !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Windows : comment interdire de lancer 2 fois un prog (en C ou autre)

 

Sujets relatifs
ASP : Comment faire pour ne pas enregistrer deux fois la meme valeur dprog java et frame => au secour !!!!
salut à vous je cherche un prog[C] Création d'une fenêtre windows
autorun pour lancer une page HTML?port parallelle et windows NT
[VB] Eteindre windows...Imprimer avec une HP USB sous 2000 (cm : KT7) : marche 1 fois sur 3
Compilateur C pour Windows gratuit ?????[VISUAL C++] Gros problème de message windows ... URGENT !!!
Plus de sujets relatifs à : Windows : comment interdire de lancer 2 fois un prog (en C ou autre)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR