Registry, MFC und Grafikkarte auslesen



  • Hallo,

    ich muss ein Programm schreiben, was mir diverse Hardwareinformationen ausliest und anziegt. Unter anderem die verwendete Grafikkarte. Leider steht die immer wo anders in der Registry. Allerdings habe ich rausgefunden, daß an einer bestimmten Stelle der Pfad angegeben ist, wo die genaue Information steht. Diesen Pfad kann ich auch problemlos auslesen, aber bei der Weiterverwendung klappt es dann gar nicht mehr.

    Hier das verwendete Programm:

    int i = 18;     
    int j = 0;
    char pfad[256];
    char zielpfad[256];
    char karte[256];
    int zahl;
    CRegKey key;
    DWORD dwCount = sizeof(pfad);
    
    /* öffnet Registry dort, wo der Pfad zu genauen Angabe steht und liest dies in die Variable "pfad" ein */
    key.Open( HKEY_LOCAL_MACHINE, "HARDWARE\DEVICEMAP\VIDEO", KEY_READ);
    key.QueryValue( pfad, "\Device\Video0", &dwCount);
    key.Close();    
    
    zahl = strlen(pfad);
    /* Entfernen von "REGISTRYMachine" aus dem Pfad und ersetzen von  durch \, nicht schön, aber es funktioniert */
    while (i <= zahl)
    {
       if (pfad[i] == '\')
       {
       zielpfad[j] = pfad[i];
       j++;
       zielpfad[j] = '\';
       }
       else
       {
       zielpfad[j] = pfad[i];
       }
       i++;
       j++;
    };
    
    /* auslesen der Registry an der Stelle zielpfad nach "Device Description", funktioniert aber nicht */
    key.Open( HKEY_LOCAL_MACHINE, zielpfad, KEY_READ);
    key.QueryValue( karte, "Device Description", &dwCount);
    key.Close();    
    
    cout << "grafikkarte " << karte << endl;
    

    Weiß einer, was an key.Open( HKEY_LOCAL_MACHINE, zielpfad, KEY_READ); falsch ist und wieso das nicht funktioniert? In zielpfad steht zumindest der richtige Pfad drin, aber irgendwie nimmt er das nicht.
    Habe das auch mit MFC gemacht, weil mir WinAPI gar nix sagt und doch irgendwie unverständlich ist und thomas80d in
    diesem Beitrag das eigentlich wunderbar erklärt hat. Also wenn hier irgendwas mit WinAPI kommt, dann bitte ne Erklärung für Deppen. Sind eh meine ersten Versuche mit C++ und Registry.

    anddie



  • ersetzen von \ durch \, nicht schön, aber es funktioniert

    Wozu das denn?

    [ Dieser Beitrag wurde am 20.03.2003 um 10:13 Uhr von RenéG editiert. ]



  • Warum ersetzt Du \ durch \? Versuch's doch mal ohne. Ich kenne mich mit der Registry zwar nicht wirklich aus, aber das wäre sehr ungewöhnlich. Dass Du in Zeichenketten \\ für ein \ angibst, liegt daran, dass VC++ das \-Zeichen für nicht druckbare Zeichen verwendet, also \n, \t etc.

    Shaggy



  • Das hatte ich zuerst ohne, aber da ging es auch nicht. Deswegen hatte ich es dann mit \\ probiert.

    anddie


Anmelden zum Antworten