Instance unique simple, tres simple svp

Signaler
Messages postés
34
Date d'inscription
dimanche 17 décembre 2006
Statut
Membre
Dernière intervention
16 juillet 2008
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Bonjour,

je fais un petit prog perso dans la barre des taches qui fait un ou deux trucs et je
voudrais un moyen tres tres simple de ne lancer qu'une seule instance,
quand je fais dans ma classe capp:
HWND wnd = findwindow(null, "ok")
if(wnd!=null)
   return 0;
il y a une erreur!

merci d'avance!

3 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Si la fenêtre est lancée directement par WinMain alors utilise CreateMutex/GetLastError pour ne pas lancer qu'une seule instance de ton application.

CreateMutex (...);
Si GetLastError fournit ERROR_INVALID_HANDLE alors il y a plus qu'une seule instance de ton application.
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
une idée serait de réutiliser la source de BruNews à propos des instances uniques en spécifiant le handle de l'icone dans la barre des taches, ça devrai passer même si cet icone est finalement masqué
(tests à faire)

autrement, un mutex tout simple devrait régler le pb

derniere solution si tu le souhaites (mais plutot lourde à mon avi)
met une clef ds la BdR & check son existance.
par contre, ça peut empécher les exécutions suivantes si la clef n'est pas correctement supprimée en cas de sortie inopinée du prog.
la soluce ici serait alors une suppression au reboot dans la clef adhoc, mais là encore c'est lourd et il s'agit d'une rustine !

___________________________________________________________
Magicalement
Nono
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Tu peux regarder mon code source Indicateur RAM dans lequel j'utilise la méthode du mutex juste à l'entrée du WinMain.