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

Langage C++ Discussion :

Obtenir informations sur la machine


Sujet :

Langage C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut Obtenir informations sur la machine
    Bonjour, pour créer un fichier de trace pour mon application, j'ai besoin d'obtenir sous forme de chaînes de caractères les informations suivantes:

    - Le nom de l'OS (du style Microsoft Windows XP Professional Service Pack 3 (Build 2600) )

    - la date

    - le CPU (infos complètes, par exemple: Intel(R) Core(TM)2 Duo CPU T8300@2.40GHz )

    Je ne vois guère comment obtenir ces informations...

    En fait j'utilise gcc+mingw et mon code est completement cross-plateform, je désire au maximum conserver cette caractéristique, sinon au pire, il faut au moins conserver la compatibilité windows.

    Cordialement,
    Benoît

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Tout est strictement dépendant de la plate-forme, et ne pourra pas être obtenu sans une librairie d'abstraction... Et encore !! Des informations comme le nom du processeur peuvent difficilement être obtenues sans instructions Assembleur et/ou appel très spécifique à l'OS : ce genre de fonction est donc souvent absente des librairies d'abstraction.

    Il va donc te falloir jouer avec la compilation conditionnelle, et prévoir bien sûr un cas "défaut" lorsque le compilateur n'a pas pu déterminer quelle était la plate-forme courante (et donc, le code à utiliser).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Merci,

    j'en avait un peu l'intuition, du coup, je récupère sans soucis le nom de l'os et quelques infos annexes (par exemple sous windows en incluant windows.h). Par contre pour le détail du processeur, je sèche un peu.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Ici par exemple, le mot-clé est "CPUID".

    Sinon, sous Windows du moins, tu peux récupérer tout ce que tu veux par WMI.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Merci,

    J'ai réussi obtenir à peut près tout ce que je voulais sauf les informations concernant la mémoire. J'ai tenté d'utiliser la fonction GlobalMemoryStatusEx du WMI:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MEMORYSTATUSEX getInfoMemoire(vector<string>& infoMem){
      MEMORYSTATUSEX statex;
      statex.dwLength = sizeof (statex);
      GlobalMemoryStatusEx (&statex);
      return statex;
    }
    mais il me met que la fonction n'est pas déclaré dans le scope. Dans le même cpp, j'utilise des fonctions du WMI telles que GetSystemInfo, GetVersionEx sans soucis (j'ai bien inclus le header windows.h)...

    Quelqu'un pour m'éclairer?

    Enfin, une petite question annexe. Je désire obtenir, dans mon, la date de création d'un exécutable dont je connais le chemin. Ne sachant comment m'y prendre, avez-vous une suggestion à me faire?

    Cordialement,

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Benoit_T Voir le message
    Je désire obtenir, dans mon, la date de création d'un exécutable dont je connais le chemin. Ne sachant comment m'y prendre, avez-vous une suggestion à me faire?
    En fait, la date de création du fichier contenant l'exécutable n'est pas fiable : les archives, programmes de setup et autres téléchargements peuvent la modifier.

    La seule solution réellement fiable, c'est d'exploiter les champs VERSION_INFO stockés dans l'exécutable, à condition qu'ils contiennent ladite information (et ce n'est pas le cas par défaut, hélas pour toi...).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    screetch
    Invité(e)
    Par défaut
    __DATE__ __TIME__ peuvent donner l'heure de la compilation du module (ce sont des macros standards en plus il me semble)

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par screetch Voir le message
    __DATE__ __TIME__ peuvent donner l'heure de la compilation du module (ce sont des macros standards en plus il me semble)
    Seulement si c'est toi-même qui fabrique l'exécutable, ET si tu fournis une manière fiable d'obtenir l'information une fois l'exécutable créé et déployé.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/11/2010, 16h49
  2. Réponses: 2
    Dernier message: 17/08/2010, 15h14
  3. Réponses: 2
    Dernier message: 11/08/2010, 21h58
  4. obtenir information sur écran
    Par XeonB dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/04/2008, 11h03

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