Programme actif ou non??

Benwillis Messages postés 28 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 21 novembre 2008 - 14 mai 2003 à 18:17
cs_isnotgood Messages postés 15 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 13 octobre 2004 - 15 mai 2003 à 15:53
Salut les gens!

Comment savoir en VisualC++ si un programme quelconque est actif?Où plutot s'il a été lancé ou non(sous Windows 2000pro de préférence)?Cela me permettra simplement de lancer un exe s'il ne l'est pas déjà (éviter ainsi l'exécution du meme programme plusieurs fois de suites).

Voila,A+

14 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2003 à 18:30
Un tas de techniques disponibles, depend de ce que tu veux.
Empecher 2 instances d'1 prog pour tout le systeme ou empecher le meme exe de demarrer 2 fois ?
Le prog peut etre copie dans plusieurs dossiers.
Si le meme prog physique tu peux faire un truc:
#pragma data_seg("Shared")
HWND g_hPrev = 0;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
c'est le + simple.
Si est pour tout le systeme, tu crees un objet du noyau alertable ou tu reserves 4 octets en FileMapping dans le fichier d'echange, tu initialises au 1er lancement, si deja fait coupure immediate.
BruNews, ciao...
0
Benwillis Messages postés 28 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 21 novembre 2008
14 mai 2003 à 18:59
-------------------------------
Réponse au message :
-------------------------------

> Un tas de techniques disponibles, depend de ce que tu veux.
> Empecher 2 instances d'1 prog pour tout le systeme ou empecher le meme exe de demarrer 2 fois ?
> Le prog peut etre copie dans plusieurs dossiers.
> Si le meme prog physique tu peux faire un truc:
> #pragma data_seg("Shared")
> HWND g_hPrev = 0;
> #pragma data_seg()
> #pragma comment(linker, "/section:Shared,rws")
> c'est le + simple.
> Si est pour tout le systeme, tu crees un objet du noyau alertable ou tu reserves 4 octets en FileMapping dans le fichier d'echange, tu initialises au 1er lancement, si deja fait coupure immediate.
> BruNews, ciao...
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut les gens!
> >
> > Comment savoir en VisualC++ si un programme quelconque est actif?Où plutot s'il a été lancé ou non(sous Windows 2000pro de préférence)?Cela me permettra simplement de lancer un exe s'il ne l'est pas déjà (éviter ainsi l'exécution du meme programme plusieurs fois de suites).
> >
> > Voila,A+
>

J'ai pas tout capté ce que tu m'as mis...je voudrais seulement faire un test pour savoir si un programme quelconque genre démineur est en train d'etre exécuter et sinon faire un "systeme("demineur.exe"); " Vois-tu ce que je veux dire??(si ca se trouve c moi qui n'est rien compris à ta réponse, ds ce cas soit plus clair stp car je ne suis pas tres fort)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2003 à 19:05
Je parlais prog win32.
systeme("demineur.exe"); ce genre de machin peu pour moi.
Si c'est pas un prog a toi dont tu cherches une instance en memoire, alors FindWindow().
BruNews, ciao...
0
Benwillis Messages postés 28 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 21 novembre 2008
14 mai 2003 à 19:12
-------------------------------
Réponse au message :
-------------------------------

> Je parlais prog win32.
> systeme("demineur.exe"); ce genre de machin peu pour moi.
> Si c'est pas un prog a toi dont tu cherches une instance en memoire, alors FindWindow().
> BruNews, ciao...
>
> Faut pas te vexer, je fais pas de prog Win32 en ce moment et FindWindow() ne marche pas comme je veux car si la fenetre est en "totale" réduction ds la barre des tâches en forme d'icone "en bas à droite" de l'écran, ca marche aussi?J'ai pas eu le temps encore d'essayer mais si tu penses à autre chose dis-le moi stp :-)

A+
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2003 à 19:16
FindWindow() fonctionne quel que soit l'etat de la fenetre.
C'est a toi ensuite de demander a la fenetre comment elle est.
BruNews, ciao...
0
Benwillis Messages postés 28 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 21 novembre 2008
14 mai 2003 à 19:22
-------------------------------
Réponse au message :
-------------------------------

> FindWindow() fonctionne quel que soit l'etat de la fenetre.
> C'est a toi ensuite de demander a la fenetre comment elle est.
> BruNews, ciao...
>
>
OK merci bien! C Cool, A+
0
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
14 mai 2003 à 19:28
sinon, tu peux regarder si le processus est ouvert. Cette source a adapter t'aidera surement : http://www.cppfrance.com/article.aspx?ID=941
BruNews, qu'en penses tu?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2003 à 19:35
C'est viable egalement mais beaucoup plus lourd. Cela fait charger une dll, augmente la taille de ton prog.
Vaut toujours mieux aller au + court.
BruNews, ciao...
0
Benwillis Messages postés 28 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 21 novembre 2008
14 mai 2003 à 19:36
-------------------------------
Réponse au message :
-------------------------------

> sinon, tu peux regarder si le processus est ouvert. Cette source a adapter t'aidera surement : http://www.cppfrance.com/article.aspx?ID=941
> BruNews, qu'en penses tu?
>
>
Merci je vais voir ca...:-)
0
Benwillis Messages postés 28 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 21 novembre 2008
14 mai 2003 à 19:48
-------------------------------
Réponse au message :
-------------------------------

> C'est viable egalement mais beaucoup plus lourd. Cela fait charger une dll, augmente la taille de ton prog.
> Vaut toujours mieux aller au + court.
> BruNews, ciao...
>
C'est vrai!
D'ailleur comment tu trouve la Classe d'une fenetre que tu connais pas?car avec FindWindow() il me faudrait la classe et le nom de la fenetre.Sachant que la derniere fois que je l'ai utilisé juste avec le nom de la fenetre ca ne fonctionnait pas...:-( peut-etr m'y sui mal pris...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2003 à 20:02
NON, FindWindow() va avec classe OU titre et fonctionne tres bien. Quelle que soit la methode faudra bien avoir un de ces elements pour faire une recherche.
BruNews, ciao...
0
Benwillis Messages postés 28 Date d'inscription vendredi 9 mai 2003 Statut Membre Dernière intervention 21 novembre 2008
14 mai 2003 à 20:14
-------------------------------
Réponse au message :
-------------------------------

> NON, FindWindow() va avec classe OU titre et fonctionne tres bien. Quelle que soit la methode faudra bien avoir un de ces elements pour faire une recherche.
> BruNews, ciao...
>
Mais pour trouver la classe?(par simple curiosité..)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2003 à 20:30
Spy++
BruNews, ciao...
0
cs_isnotgood Messages postés 15 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 13 octobre 2004
15 mai 2003 à 15:53
Tu peux utiliser ces fct pour lancer un exe ou contrôler si il tourne. (Cf detail dans MSDN)

PROCESS_INFORMATION Process;
BOOL ret ;

ret = CreateProcess(NULL, AppPathStart, NULL, NULL, true, NORMAL_PRIORITY_CLASS, NULL, NULL, &start, &Process);

ret = GetProcessVersion(Process.dwProcessId);
0
Rejoignez-nous