[C++] Controler qu'un programme soit lancer

Résolu/Fermé
HacK SpideR Messages postés 60 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 24 février 2008 - 23 août 2007 à 11:19
HacK SpideR Messages postés 60 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 24 février 2008 - 23 août 2007 à 20:10
Bonjour, je suis en train de programmer un programme qui aurait besoin d'un autre programme pour fonctionner et je voudrai qu'en debut de lancement le logiciel test si ce programme et bien en cour d'éxécution. J'ai cherché un peu partout mais je n'ai pas trouver ce qu'il me fallait, donc je vien le demander ici ^^.

Merci d'avance pour votre aide

HacK SpideR
A voir également:

7 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
23 août 2007 à 13:38
En C sous windows tu peux lister le nom des processus en cours d'execution avce une combinaison de quelques fonctions.
J'ai repris un vieux prog à moi tout pourri et j'ai modifié un peu le code pour te faire une fonction qui fait ça:
#include <windows.h>
#include <string.h>
#include <psapi.h>
#include <stdio.h>

// Determine si un processus est en cours d'execution ou pas
BOOL process_exists(const char* monProcess)
{
	DWORD processes[200], nb_processes;
	char process_name[100];
	int i;
	HANDLE hprocess;
    
	EnumProcesses(processes, sizeof(processes),&nb_processes);
        //On teste tous les processus pour voir si leur nom correspond
	for(i=0;i<nb_processes/sizeof (DWORD);i++)
  	{
		hprocess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processes[i]);
		//Prend le nom du processus et le met dans process_name
		GetModuleBaseName(hprocess, NULL, process_name, sizeof(process_name) );
		CloseHandle(hprocess);
                //Ce processus est il le même que celui demandé
		if(!strcasecmp(process_name, monProcess)){
			return TRUE;
		}
	}
	return FALSE;
}

int main()
{
    if(process_exists("nom_process.exe")){
       puts("oui");
    }
    else{
       puts("non");
    }
    return 0;
}
3
Leskate Messages postés 80 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 mai 2008 8
23 août 2007 à 11:33
si tu code sous unix, je sais que la commande shell 'ps'peut te donner la liste des processusse actifs. tu peux donc voir si ton programme tourne toujous en lancant ton programme.
en PHP c'est system(<commande>) mais je suis pas certain que ce soit la meme en C++. vu que les 2 langage sont tres proche... tu as de forte chance que ca marche ;)
1
Gunneboy Messages postés 4 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 24 août 2007
23 août 2007 à 11:35
Bonjour,

Quelle commande as-tu utilisé pour lancer tout autre executable, et quelle compilateur utilise-tu?
0
HacK SpideR Messages postés 60 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 24 février 2008 6
23 août 2007 à 11:40
bonjour, non je programme sous windows, pour lancer un programme en C j'utilise
system("start nomdel'exe");
j'utilise dev-c++


system(commande), c'est possible mais quel serai la commande alors ?
0

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

Posez votre question
Leskate Messages postés 80 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 mai 2008 8
23 août 2007 à 11:45
il faut que tu trouve la commande windaube qui permet de voir la liste des processus actif, que je ne connais pas :s
0
HacK SpideR Messages postés 60 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 24 février 2008 6
23 août 2007 à 11:59
"Tasklist
Tasklist est un outil en ligne de commande fourni avec Windows.
Ouvrez une fenêtre Dos et tapez: tasklist pour voir la liste des processus.
(Ou bien: tasklist > liste.txt pour obtenir la sortie dans un fichier texte.) "

J'ai trouver sa, mais il reste toujours a ce que le programme vérifier si l'autre programme fonctionne. J'ai penser avec liste.txt et faire une recherche a l'interieur avec le nom de mon programme, je ne sais pas si c'est fesable.

sinon j'avais penser a crer avec mon programme initiale un autre programme qui serai une substitution je sais faire :
fopen("programme.exe", "w")
mais apres il faudrai remplire le .exe cela doit se remplire surment en héxadécimal mais cela ferai beaucoup de ligne.
0
HacK SpideR Messages postés 60 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 24 février 2008 6
23 août 2007 à 20:10
merci c'est parfait ^^
0