Vérifier une seule instance en multi-utilisateur

Résolu
lefatalprogrammeur Messages postés 3 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 20 mai 2007 - 18 mai 2007 à 13:42
lefatalprogrammeur Messages postés 3 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 20 mai 2007 - 20 mai 2007 à 17:03
salut

voilà mon problème :

pour vérifier que mon application est lancé qu'une seule fois, j'utilise un simple mutex ou
la class de ma fenêtre.

mais ça marche pas si plusieurs utilisateur sont "loggés" simutanément.

j'utilise la clé "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" pour démarrer le
programme avec mon PC. mais si je change d'utilisateur (sans fermer la session) ça lance
une nouvelle instance

merci de votre aide

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 mai 2007 à 23:46
Teste ainsi:
HANDLE hMutex=CreateMutex(0,0,"Global\onlyoneinstance");

ciao...
BruNews, MVP VC++
3
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
18 mai 2007 à 19:57
code de création du mutex ?
0
lefatalprogrammeur Messages postés 3 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 20 mai 2007
18 mai 2007 à 20:58
c'est un mutex de base :

HANDLE hMutex=CreateMutex(0,0,"onlyoneinstance");

if (hMutex==0) crash();   // ça arrive jamais

if (GetLastError()==ERROR_ALREADY_EXISTS) return 0; // existe déjà > bye
//
//  le programme se lance.......
//
0
lefatalprogrammeur Messages postés 3 Date d'inscription vendredi 18 mai 2007 Statut Membre Dernière intervention 20 mai 2007
20 mai 2007 à 17:03
ça marche parfaitement !

mais j'avais vu nulle part le "Global"...

merci beaucoup !
0
Rejoignez-nous