Programme deja ouvert ? [Résolu]

Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007
- - Dernière réponse : Gendal67
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011
- 29 avril 2005 à 19:40
Salut,

voila je developpe un programme, et j'aimerais empecher l'utilisateur de l'ouvrir plusieur foi...
Genre quand il double clique sur l'icone du soft , le soft s'ouvre et regarde si le prog est deja ouvert, si oui alors il maximise celui deja ouvert et ensuite il se ferme lui meme...

qqun a compris ?
qqun a une solution ?

je coirs avois deja vue cela avec isIconic... mais pas sur... merci
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007
3
Merci
oue ou je peux mettre NULL aussi...

en gros voila le resultat

BOOL CheckAlreadyRun(void)
{
   HANDLE mutex;
   if (mutex = CreateMutex(NULL, FALSE, NOMMUTEX))
   {
         if (GetLastError() == ERROR_ALREADY_EXISTS)
         {
               //Si on est ici c'est que le programme est déja lancé
               ReleaseMutex(mutex);
               return FALSE;
         }
         ReleaseMutex(mutex);
   }
   return TRUE;
}

// et cela on le met dans le winmain avant toute creatio de window...


if( CheckAlreadyRun() && (existhwnd = FindWindow("Parent", "3D Voice Chat")) )
  {
   // If minimize then maximize :)
   if( IsIconic(existhwnd) )
    OpenIcon(existhwnd);


   // Bring window to top
   BringWindowToTop(existhwnd);
   return 0;
  }


Merci pour tout :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de barraq
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
2
0
Merci
BOOL CheckAlreadyRun(void)
{
HANDLE mutex;
if (mutex = CreateMutex(NULL, FALSE, NOMMUTEX))
{
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
//Si on est ici c'est que le programme est déja lancé
ReleaseMutex(mutex);
return FALSE;
}
ReleaseMutex(mutex);
}
return TRUE;
}

Voila, tu n'as plus qu'à appeler ça dans ton winmain avant de créer ta fenetre, si la fonction te renvoie FALSE, alors fait un FindWindow pour trouver ta fenetre et affiche la au premier plan!

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Commenter la réponse de julienbj
Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007
0
Merci
merci je v tester, mais just un truc je met quoi a la place de "NOMMUTEX" ?
Commenter la réponse de barraq
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
2
0
Merci
A la place de NOMMUTEX, tu mets une chaine de caractère!

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Commenter la réponse de julienbj
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13
0
Merci
UNIQUE INSTANCE PROG (WIN32)
http://www.cppfrance.com/code.aspx?ID=25238

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011
0
Merci
B'soir les progeurs!

J'ai fait aussi une source à ce sujet, bien que moins bien que BruNews...si tu veux, va donc y jetter un coup d'oeil

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
Commenter la réponse de Gendal67