begin process at 2010 02 10 05:19:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Récupération d'informations


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Récupération d'informations

dimanche 19 mars 2006 à 12:18:32 | Récupération d'informations

nicolas66

Bonjour,

Pour un projet perso, je cherche à pouvoir récupérer plusieurs informations en C++ sous windows :

Arrow Nom du système d'exploitation (Windows NT par ex.)
Arrow Nom du processeur (AMD Athlon 1500+ par ex.)
Arrow Nom de la carte graphique (NVIDIA GeForce 6800 par ex.)
Arrow Capacité mémoire de la carte graphique (256 Mo par ex.)

Je recherche déjà le nom des fonctions pour tenter de faire une recherche de mon côté. Merci d'avance pour votre aide Razz


Nico.
dimanche 19 mars 2006 à 12:53:45 | Re : Récupération d'informations

Oeil_de_taupe

Salut,

Avec GetVersionEx tu devrais pouvoir avoir la version du système d'exploitation sur lequel tourne ton programme.
Avec GetSystemInfo tu devrais pouvoir retourner le nombre de processeur et l'architecture mais peut-être pas le nom exacte du CPU

Pour le processeur il y a aussi cette source faite par BruNews je ne l'ai pas regardée mais d'après le titre il semble qu'il y ait de l'assembleur....  alors je ne sais pas si tu es intéréssé.


Sinon du côté de la carte graphique je n'en ai aucune idée....



J'espère que j'aurai pu t'être utile.
dimanche 19 mars 2006 à 12:59:42 | Re : Récupération d'informations

nicolas66

En fait pour le nom de la carte graphique, j'avais trouvé la fonction 'EnumDisplayDevices' mais je ne vois pas trop comment m'en servir ...
dimanche 19 mars 2006 à 16:49:03 | Re : Récupération d'informations

Oeil_de_taupe

Voici un petit bout de code vite fait permettant de récupérer le nom de la carte graphique qui affiche le bureau. C'est vite fait mais ça me semble marcher. Je ne sais pas si ça peut t'aider...

#include "stdafx.h"

#include<windows.h>

#include<iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    DISPLAY_DEVICE dDevice = {0};
    dDevice.cb = sizeof(DISPLAY_DEVICE);

    DWORD IDDisplayScan = 0; //No du device à scanner
   
    //Tourne jusqu'à ce que la fonction retourne une erreur (==> au bout de la liste)
    while( EnumDisplayDevices(NULL, IDDisplayScan, &dDevice, 0) )
    {
        //Test si ce device est utilisé pour le bureau
        if( dDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP )
        {
            wcout << "Device utilise pour le bureau: " << dDevice.DeviceString << endl;
            break; //Il n'y a pas deux devices pour afficher le bureau ==> casse la boucle qui liste les devices d'affichage
        }

        memset(&dDevice, 0, sizeof(dDevice));
        dDevice.cb = sizeof(dDevice);

        IDDisplayScan++;
    }

   
    cin.get();
    return 0;
}


(fait avec Visual Studio.net 2005 en C++)

dimanche 19 mars 2006 à 17:05:26 | Re : Récupération d'informations

nicolas66

Perso j'utilise Dev-C++ 4.0 et ton code ne compile pas. Question : à quoi correspond le fichier 'stdafx.h' ? Sinon j'ai réussi à partir d'un bout de code du site MSDN pour pouvoir afficher le nom de la carte graphique, le taux de rafraichissement et le numéro de version du driver. Voici le code :

#include <windows.h>
#include <cstdio>
#include <cstdlib>

typedef struct _DISPLAY_DEVICE
{
        DWORD cb;
        TCHAR DeviceName[32];
        TCHAR DeviceString[128];
        DWORD StateFlags;
        TCHAR DeviceID[128];
        TCHAR DeviceKey[128];
} DISPLAY_DEVICE, *PDISPLAY_DEVICE;

#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
#define DISPLAY_DEVICE_PRIMARY_DEVICE      0x00000004
#define ENUM_CURRENT_SETTINGS              0x00000000
#define ENUM_REGISTRY_SETTINGS             0x00000001


int main (int argc, char**argv)
{
        BOOL (WINAPI* pEnumDisplayDevices)(PVOID,DWORD,PVOID,DWORD);
        BOOL (WINAPI* pEnumDisplaySettings)(PVOID,DWORD,PVOID);
        (FARPROC)pEnumDisplayDevices  = GetProcAddress(LoadLibrary("USER32"), "EnumDisplayDevicesA");
        (FARPROC)pEnumDisplaySettings = GetProcAddress(LoadLibrary("USER32"), "EnumDisplaySettingsA");

        if( pEnumDisplayDevices )
        {
                DISPLAY_DEVICE dd;
                ZeroMemory(&dd, sizeof(dd));
                dd.cb = sizeof(dd);

                DEVMODE dm;
                ZeroMemory(&dm, sizeof(dm));
                dm.dmSize = sizeof(dm);

                for( unsigned int i=0; (*pEnumDisplayDevices)(NULL, i, &dd, 0); i++ )
                {
                        if( (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) &&
                            (dd.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) )
                        {
                                printf("Device name : %s\n", dd.DeviceString);
                                (*pEnumDisplaySettings)(dd.DeviceName, ENUM_CURRENT_SETTINGS, &dm);
                                printf("Driver version : %d\n", dm.dmDriverVersion);
                                printf("Vertical refresh rate : %d Hz\n", dm.dmDisplayFrequency);
                                break;
                        }
                }
        }

        system("PAUSE");
        return EXIT_SUCCESS;
}

dimanche 19 mars 2006 à 17:10:13 | Re : Récupération d'informations

nicolas66

En fait je suis obligé apparement de déclarer la structure DISPLAY_DEVICE sinon le compilateur ne la trouve pas dans 'wingdi.h'. De plus, je suis aussi obligé de faire des déclarations des fonctions que je vais utiliser (heu désolé pour l'approximation de mes propos, la prog' windows c'est pas du tout ma tasse de thé :p).

Voilà ce qui ne fonctionnait pas chez moi mais maintenant ca marche comme sur des roulettes. Reste plus qu'à choper le nom du système d'exploitation, sa version, le nombre de processeurs et le nom du processeur.

Nempêche sous nunux, ca ferait un bail que ca serait réglé cette histoire :P
dimanche 19 mars 2006 à 19:52:32 | Re : Récupération d'informations

nicolas66

Bon après passer toute la journée là-dessus j'ai enfin réussi à obtenir ce que je souhaitais. Pour ceux que ça intéresse, j'ai mis le code source et l'exécutable sur mon site à cette adresse car le code est de grande taille :

Arrow [ Lien ]


Voici un screen' de ce que j'obtiens chez moi :



Voilà, donc merci à moi-même Razz


Nico.


Cette discussion est classée dans : windows, ex, carte, récupération, informations


Répondre à ce message

Sujets en rapport avec ce message

Gestion du port ISA Windows ce [ par GuilhemMtp ] Je recherche depuis un certain temps des informations quand à la gestion du port ISA sur Windows CE.Malheureusement toutes mes recherches ne m'ont app Récupération d'évènements windows [ par fginer ] Bonjour,Je souhaite savoir comment on peut faire pour récupérer les message windows envoyée à la fenêtre principale d'une application.En effet, il me Registre ou API windows [ par Will ] Je souhaite recuperer les infos d'un pc (c a d la carte reseau, la carte son, le type de clavier etc...).Que dois-je utiliser, la base de registe wind Récupération des paramètres REGIONAUX de Windows (Symbole décimal . ou ,) [ par geag17 ] Bonjours j'ai besoin pour utiliser corectement une base de donnée (sous borland) de savoir si le paramètres régionnal "symbol décimal" est un point ou informations du carte mère [ par Mohbenna2005 ] Comment obtenir les informations du carte mère d'une machine pour que votre application en C++ Builder ne marche que dans une seule machine. acquisition de données via la carte son du pc [ par tatronic ] bonjour à vous!  je voudrais utiliser la carte son  du pc comme convertisseur analogique-numérique afin de prélever un signal que j'injecte à son entr focer l uitlisation d'une carte reseau grace a l API windows [ par zurp ] bonjour, je repose une question non elucider sous une forme plus clair simple et direct. quelqu un sais comment grace a l api de windows,  specifi AIDEZ MOI !!!!!! [ par mathieu ] salut,je viens de monter un pc :carte mère : MSI K7T 266 PROcarte graphique : Geforce 2 GTS winfast (LeadTek)256 mo de ram DDRet je rencontre un probl Pointeur qui fait planter Windows !!! [ par coyito ] Salutquand je défini moi même une addresse pour un pointeur (exemple pour lire n'importe ou dans la mémoire) j'ai une erreur windows "access violation zut g un prob [ par FUCKMAN ] g un prob ca me dis c:\windows\bureau\untitled1.cpp:2: ANSI C++ forbids declaration `remove' with no typec:\windows\bureau\untitled1.cpp:2: initializa


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales