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

WaFFel Messages postés 45 Date d'inscription samedi 16 février 2002 Statut Membre Dernière intervention 16 septembre 2004 - 1 juil. 2004 à 20:42
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005 - 4 juil. 2004 à 08:48
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

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
1 juil. 2004 à 21:04
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..."
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
1 juil. 2004 à 21:06
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..."
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
1 juil. 2004 à 21:08
http://www.cppfrance.com/code.aspx?ID=17387
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 juil. 2004 à 21:43
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++
0

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

Posez votre question
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
2 juil. 2004 à 00:39
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+ ;)
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
2 juil. 2004 à 00:42
et #include <windows.h> pour avoir acces aux mutex et aux messagebox !
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 juil. 2004 à 00:52
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++
0
WaFFel Messages postés 45 Date d'inscription samedi 16 février 2002 Statut Membre Dernière intervention 16 septembre 2004
3 juil. 2004 à 03:01
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
0
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005
4 juil. 2004 à 08:47
salut

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

a+
alain
0
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005
4 juil. 2004 à 08:48
pardon

ici

alain
0
Rejoignez-nous