Surveillance d'une appli/process

Fermé
Gael06 Messages postés 179 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 3 janvier 2023 - 23 mars 2011 à 17:09
 Utilisateur anonyme - 10 avril 2011 à 14:30
Bonjour,

Comment pourrais-je vérifier qu'une appli tourne bien sur un PC sous Win XP, ou plutôt avoir une alarme si l'appli se plante ?

En fait c'est un process de "production" qui tourne, donc rien n'est vraiment visible à l'écran.

Actuellement j'affiche le gestionnaire de tâches mais je n'ai pas l'oeil dessus en permanence... Parfois l'appli plante et je ne m'en rend compte que plusieurs 10aine de minutes après... :-(

Je connais le nom de l'appli et le nom du process donc je peux pas me baser dessus si besoin...

Je peux faire un script DOS par ex. mais je ne sais pas comment faire, quelles commandes utiliser...

Merci pour le coup de main.

A bientôt.

A voir également:

8 réponses

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
23 mars 2011 à 21:29
Bonjour, j'ai repris un petit bout de code ici : https://cboard.cprogramming.com/windows-programming/88433-check-running-process-dev-cplusplus.html puis modifié pour compiler sous codeblocks programme console en c, je pense que vous savez comment faire pour l'utiliser etc.. mais n'oubliez pas de linker la libpsapi.a dans "project > build options" onglet "linker settings" pour que ça puisse fonctionner. Le programme va vérifier si le processus est activé ou non toutes les 1000ms (1seconde) en exemple la calculatrice de windows "calc.exe", avec un auto redémarrage en cas de fermeture

#include <stdio.h>
#include <windows.h>
#include <psapi.h>

int isRunning(const char *pName)
{
	unsigned long aProcesses[1024], cbNeeded, cProcesses;
	unsigned int i;
	char buffer[50];
	if(!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))
		return 0;

	cProcesses = cbNeeded / sizeof(unsigned long);
	for(i = 0; i < cProcesses; i++)
	{
		if(aProcesses[i] == 0)
			continue;

		HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, aProcesses[i]);
		GetModuleBaseName(hProcess, 0, buffer, 50);
		CloseHandle(hProcess);
		if(strcmp(pName,buffer)==0)
			return 1;
	}
	return 0;
}

int main()
{
    int moniteur,in=0;
    while(1){
        moniteur=isRunning("calc.exe");
        if(moniteur){
            if(!in){
                printf("processus calc.exe en cours!\n");
                in=1;
            }
        }
        else{
            if(in){
                printf("processus calc.exe hors service!\n");
                /* redemarrage auto de calc.exe */
                ShellExecute(NULL,"open","calc.exe","",NULL,SW_SHOWNORMAL);
                in=0;
            }
        }
        /* verification chaque seconde */
        Sleep(1000);
    }
    return 0;
}
1
Utilisateur anonyme
24 mars 2011 à 15:25
Bonjour,

J'ai développé une application sous VB.NET 2008 qui surveille
ainsi un process. Actuellement j'ai une version publié qui surveille
Excel.

1.) Si tu connais VB.NET, je puis te fournir mon code source.
2.) Sinon, fournis moi le nom du process qui doit être surveillé, je
pourrai modifier mes sources et déposer le tout sur mon site web
perso que tu pourras récupérer par FTP.
3.) Actuellement, mon appli lance un fichier BMP sur la racine du C
[C:\Alerte.bmp] si Excel est fermé. Mais ce pourraît être un beep
répétitif jusqu'a ce que l'appli soit repartie.

En fait, à toi de voir si ça t'intéresse, ce n'est qu'une suggestion :-)

Cdt

Lupin

~On ne voit bien qu'avec le coeur~
~L'essentiel est invisible pour les yeux~
0
Super merci Lupin pour ta proposition.
Pour être honnête je ne connais pas grand chose en info.... J'étais pas mauvais en assembleur dans les années 80 puis en Basic, un peu en Pascal, Fortran...mais je n'ai plus programmé depuis !!! Donc, pour répondre à ton point 1, je serais bien incapable de bosser sur ton code.
Pour le point 2, je peux effectivement te passer des infos, mais avant tout, je dois m'excuser, je me suis rendu compte hier am que c'est du Windows 2000 !!! Oui, je sais, ça date.... mais le programme qui tourne est fait pour cette config...
Peux-tu toujours m'aider ?
Merci
A très bientôt
0
Bonjour gael,

Ce qu'il faut savoir avant tout :

1.) Est-ce que le FrameWork.NET 3.5 est installé sur ton poste de W2K?
2.) Si oui, quel est le nom du process que tu dois surveiller (celui qui
apparaît dans le gestionnaire des tâches).
3.) Pour l'instant mon appli affiche une fichier bmp [ ALERTE ].
Préfères-tu un beep répétitif ou les 2 peut-être ?

Avec ces informations je pourrai adapter mon code et déposer une
version sur mon site WEB perso.


N.B. Si le FRameWork.NET 3.5 n'est pas installé, j'ai ma première
version qui est écrit en VBS et celle-ci fonctionne assurément sur
W2K.

Cdt

Lupin
0

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

Posez votre question
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
28 mars 2011 à 16:36
Salut.
La solution de Lupin, c'est un peu : pourquoi faire simple lorsque l'on peut faire compliquer ?
La solution de hxyp est en C, donc plus portable etc.
Sinon, il y a peut être une autre solution, en script (sous win, il faut s'accrocher, mais bon).
Je n'ai pas de w2000 sous la main, mais sous XP, il y a la commande "qprocess" qui affiche l'ensemble des processus en cours sur la machine. Il suffit alors de traiter la sortie avec un script.
Si ça ne te fait pas peur, tu peux installer cygwin, et je t'aiderai à faire un script (mais là ça redevient un peu à compliquer les choses par rapport à Hxyp).
Pour info, le corps de la boucle donnerai un truc dans le genre :
while  ( qprocess |grep -q "monProgramme.exe" )
 do sleep 1000;done
0
Utilisateur anonyme
31 mars 2011 à 22:00
Bonjour gael,

As-tu pris une décision sur ce que tu veux faire !

Mon appli est fonctionnel, j'ai ajouté un champ texte pour
le nom du process à surveiller ainsi qu'un groupe de RadioBouton
pour choisir [ Alarme visuel ] ou [ Alarme sonore ].

Je vais tester sur un poste qui n'a pas VB2008 d'installer mais
seulement le framework 3.5 et si tout est conforme et
surtout si ça t'intéresse toujours je le dépose sur mon site perso
pour que tu puisse le récupérer.

A toi de voir, j'attends de tes nouvelles.

Cdt

Lupin
0
Bonjour a tous,
Je suis a l'etranger (Afrique) depuis 15j avec gros pb internet, donc pas possible de vous repondre en detail.
Je reviens vers vous des mon retour.
Cdt
0
Utilisateur anonyme
8 avril 2011 à 14:59
Bonjour Gael,

Je t'ai écrit un message privée avec l'adresse FTP de mon appli.

Donne-moi des nouvelles, à savoir si cela répond à ton besoin.

Les avis sont partagées, mais je considère que c'est le tien qui m'importe.
Si mon appli ne te convient pas, c'est parfait comme cela.

Cdt

Lupin
0
re:

Voilà, j'ai testé le tout et ça fonctionne nickel sous XP.

Si tu est connecté à la toile au moment de lancer le setup,
il va chercher de lui-même le service pack du framework
et le tour est joué :-).

Cdt

Lupin
0