Programme deja ouvert ? [Résolu]

Signaler
Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007
-
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011
-
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

6 réponses

Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007

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 :)
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
10
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]
Messages postés
89
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
14 septembre 2007

merci je v tester, mais just un truc je met quoi a la place de "NOMMUTEX" ?
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
10
A la place de NOMMUTEX, tu mets une chaine de caractère!

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

ciao...
BruNews, MVP VC++
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

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!! :-))