Comment faire pour que le programme ne s'execute pas si il vois qui est entrais

Signaler
Messages postés
45
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
16 septembre 2004
-
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005
-
bien voila mon problem ses que je ne sais pas comement empecher de faire marcher mon programe si il vois qui est dejas entrais de marche sur l'ordi

10 réponses

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
bah tu fais une recherche de processus tu cherches combien de fois le processus "nomdetonexe.exe" est lancé, si il est lancé plus de deux fois... tu en supprimes un !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
mais regarde dans les sources de BruNews, il avait un truc similaire, mais lui il empeché de lancer les fenetres d'internet explorer, au bout d'un certain nombre... regarde de ce coté la !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
http://www.cppfrance.com/code.aspx?ID=17387
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Une des nombreuses solutions possibles:

#pragma data_seg("Shared")
HWND g_hPrev = 0;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")

BOOL IsAnotherProcess()
{
if(!IsWindow(g_hPrev)) return 0;
HWND hChild = GetLastActivePopup(g_hPrev);
if(IsIconic(hChild)) ShowWindow(hChild, SW_RESTORE);
SetForegroundWindow(hChild);
return 1;
}

case WM_INITDIALG: // ou WM_CREATE
g_hPrev = hdlg;
....
return 1;
etc....

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
if(IsAnotherProcess()) return 0;
hinst = hInstance;
DialogBoxParam(hInstance, (LPCTSTR)IDD_APP, 0, AppDlgProc, 0);
return 0;
}

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
700
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
le plus simple pour empecher qu'un process se lance plus d'une fois : ouvrir un mutex.

au début de ton code : (apres le winmain ou le main)

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
HANDLE hMutex=CreateMutex(NULL, TRUE, "unnomunique");
if (!hMutex)
{
MessageBox(NULL, "Impossible de créer le mutex.", NULL, MB_OK | MB_ICONINFORMATION);
return 0;
}
// On essaye de s'approprier le mutex
if (ReleaseMutex(hMutex))
{
// Appropriation ok

// ici le code de ton programme

}
else
{
MessageBox(NULL, "Impossible de lancer ce programme plus d'une fois !!", NULL, MB_OK | MB_ICONINFORMATION);
}
}


voila ca ca marche!!
a+ ;)
Messages postés
700
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
et #include <windows.h> pour avoir acces aux mutex et aux messagebox !
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
L'utilisateur est habitue a voir son prog au premier plan quand il clique sur le raccourci, pour cela que j'ai mis cette solution.
Au cas ou le prog serait duplque sur le disque dur, on peut obtenir la meme chose avec 4 octets dans un fichier mappe sans nom.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
45
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
16 septembre 2004

WOW trop cool l'idea du Mutex :P sa marche au poile meme si je sais pas vraiemnt ses koi...mais sa marche:P

a en passant jorais une autre petite question...dison que je veux savoir si un fichier existe sur mon disk....je mit prend comment...?

Merci :P
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

salut

vois le message de brunews : [ici http://www.cppfrance.com/forum.v2.aspx?ID=211157]

a+
alain
Messages postés
85
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
18 septembre 2005

pardon

ici

alain