Programme deja ouvert ?

Résolu
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007 - 29 avril 2005 à 14:23
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

6 réponses

barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
29 avril 2005 à 15:54
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 :)
3
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
29 avril 2005 à 14:51
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]
0
barraq Messages postés 89 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 14 septembre 2007
29 avril 2005 à 15:41
merci je v tester, mais just un truc je met quoi a la place de "NOMMUTEX" ?
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
29 avril 2005 à 15:50
A la place de NOMMUTEX, tu mets une chaine de caractère!

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 avril 2005 à 16:22
UNIQUE INSTANCE PROG (WIN32)
http://www.cppfrance.com/code.aspx?ID=25238

ciao...
BruNews, MVP VC++
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
29 avril 2005 à 19:40
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!! :-))
0
Rejoignez-nous