Comment emêcher qu'unapplication soit lancée plus d'une fois par un utilisateur ? hHinstance et hPrevInstance sont-ils d'une quelconque utilité pour traiter ce cas ? Si oui , comment ?
Comment emêcher qu'unapplication soit lancée plus d'une fois par un utilisateur ? hHinstance et hPrevInstance sont-ils d'une quelconque utilité pour traiter ce cas ? Si oui , comment ?
hPrevInstance est un relicat de Win16. hHinstance ne sert pas à ça non.
Une solution fiable est de créer un Mutex nommé.
http://www.flounder.com/nomultiples.htm
c'est assez simple en somme, .... une fois qu'on le sait.![]()
il te faut un drapeau, positionnné par la premiere instance de ton programme.
si le drapeau est positionnné, le programme s'arrete tout de suite.
pour que les differentes instances qui essaieraient de se lancer puissent acceder à ce drapeau, une bonne solution, est le mutex.
du coup, tu peux integrer dans ton programme une petite fonction du type:
ensuite, au demarrage de ton appli, tu fais simplement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 bool MyApp::isRunning() { HANDLE hMutex = NULL; hMutex = CreateMutex ( NULL, true, _T("Mon Programme") ); if ( GetLastError() == ERROR_ALREADY_EXISTS ) { CloseHandle ( hMutex ); return true; } return false; }
if (isRunning())
return FALSE;
et hop..![]()
t'as quatres méthodes ici, à toi de choisir :
http://blackhorus.bizhat.com/articles/MultipleIns.htm
Les problèmes avec les autres méthodes sont détaillés dans mon premier lien.
Petite remarque idiote : pense à choisir un nom plus spécifique que "Mon Programme"![]()
Partager