IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comprendre le listing


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Etudiant en SSI
    Inscrit en
    Octobre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en SSI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 58
    Par défaut Comprendre le listing
    Bonjour à tous,

    Je suis nouveau sur le forum, je viens à vous car mon patron m'a conseillé ce forum, j'ai tout juste 18 ans.

    Je cherche à faire deux choses
    .

    > Lister le contenue d'un dossier quelconque (histoire de), ainsi que tous les processus en cours d'exécution.

    > Envoyer tout ceci dans un fichier texte.

    J'ai fais des recherches, demandé de l'aide, et ces deux liens sont ressorties :

    http://c.developpez.com/faq/index.ph...HIERS_dir_list

    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    Est-ce si difficile que cela en a l'air ?

    Je vous remercie

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Est-ce si difficile que cela en a l'air ?
    J'ose supposer que cette question fait référence à l'énumération de processus, car le code de listing de répertoire de la FAQ est quand même déjà on ne peut plus simple. Alors effectivement, ce code que tu as trouvé sur msdn est un peu compliqué car il utilise la fonction EnumProcess qui retourne rapidement la liste des processus en cours mais sous forme de pids (process id numbers, id pour identifiers) alors que très souvent, mais pas toujours, on veut avoir plus d'infos que cela (dont souvent le nom du processus). Dans ce cas, il faut alors appeler d'autres fonctions, cette fois-ci plus compliquées, pour avoir ces informations. Heureusement, il existe une alternative plus simple pour effectuer la même tâche. La solution est présentée ici.

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant en SSI
    Inscrit en
    Octobre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en SSI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 58
    Par défaut
    Bonjour Melem,

    Je te remercie de ta réponse, c'est ce que je cherchais mais je ne l'ais pas trouvé dans la Faq (sans doute mal cherché).

    Je vais travailler la dessus merci.

    Une question bête au passage, comment puis-je envoyer le listing des processus dans un fichier texte ?
    Aurais-tu un lien qui montre comment créer des rapports ?

    Encore merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    pour écrire dans un fichier, regarde l'utilisation de fwrite qui nécessite un FILE* à ouvrir en écriture.
    FILE*, fopen, fwrite, fclose
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre émérite Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Par défaut
    Bonjour,
    Pour ce qu'il faut faire, je pense qu'il sera plus simple d'utiliser fprintf que fwrite...

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    comment puis-je envoyer le listing des processus dans un fichier texte ?
    Il suffit de remplacer chaque printf par un fprintf dans le fichier de ton choix. Ce n'est pas la seule méthode disponible, mais c'est ce qu'il y a de plus "naturel" je pense. Le code devient alors comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <tlhelp32.h>
     
    int main()
    {
        HANDLE hSnapShot;
        PROCESSENTRY32 pe;
        FILE * f_rapport;
     
        f_rapport = fopen("rapport.txt", "w"); /* Ouverture du fichier rapport.txt ("rapport.txt") pour écriture ("w"). */
        /* Si le fichier n'existe pas, il sera créé. */
        if (f_rapport == NULL)
        {
            /* En cas d'erreur d'ouverture du fichier, afficher le message d'erreur puis quitter le programme. */
            perror("rapport.txt");
            exit(0);
        }
     
        hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if (Process32First(hSnapShot, &pe))
        {
            do
                fprintf(f_rapport, "%-20s (pid = %4lu)\n", pe.szExeFile, pe.th32ProcessID);
            while (Process32Next(hSnapShot, &pe));
        }
     
        /* Fermeture du fichier. */
        fclose(f_rapport);
     
        CloseHandle(hSnapShot);
     
        return 0;
    }

  7. #7
    Membre averti
    Homme Profil pro
    Etudiant en SSI
    Inscrit en
    Octobre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en SSI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 58
    Par défaut
    Bonsoir à tous,

    Je vais prendre ta solution Melem, car c'est la plus détaillée et facile pour moi.

    Je vous remercie tous pour vos commentaires, ça m'a beaucoup aidé .

    A bientôt

  8. #8
    Membre averti
    Homme Profil pro
    Etudiant en SSI
    Inscrit en
    Octobre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en SSI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 58
    Par défaut
    Bonjour,

    Je viens de tester ce code, mais le rapport est vide, et comme je débute...

    Merci à vous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <tlhelp32.h>
     
    int main()
    {
        HANDLE hSnapShot;
        PROCESSENTRY32 pe;
        FILE * f_rapport;
     
        f_rapport = fopen("rapport.txt", "w"); /* Ouverture du fichier rapport.txt ("rapport.txt") pour écriture ("w"). */
        /* Si le fichier n'existe pas, il sera créé. */
        if (f_rapport == NULL)
        {
            /* En cas d'erreur d'ouverture du fichier, afficher le message d'erreur puis quitter le programme. */
            perror("rapport.txt");
            exit(0);
        }
     
        hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if (Process32First(hSnapShot, &pe))
        {
            do
                fprintf(f_rapport, "%-20s (pid = %4lu)\n", pe.szExeFile, pe.th32ProcessID);
            while (Process32Next(hSnapShot, &pe));
        }
     
        /* Fermeture du fichier. */
        fclose(f_rapport);
     
        CloseHandle(hSnapShot);
     
        return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/03/2014, 10h01
  2. Réponses: 6
    Dernier message: 21/12/2013, 00h56
  3. Réponses: 3
    Dernier message: 30/01/2010, 11h56
  4. Comprendre les "Linked lists"
    Par Invité1 dans le forum C
    Réponses: 12
    Dernier message: 29/08/2008, 01h34
  5. Réponses: 12
    Dernier message: 08/02/2005, 23h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo