Surveillance d'une appli/process

Gael06 Messages postés 217 Statut Membre -  
 Utilisateur anonyme -
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.

8 réponses

  1. Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
     
    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
  2. Utilisateur anonyme
     
    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
  3. gael06
     
    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
  4. Utilisateur anonyme
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  7. Utilisateur anonyme
     
    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
  8. gael06
     
    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
  9. Utilisateur anonyme
     
    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
    1. Utilisateur anonyme
       
      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