Informationen zur Grafikkarte
-
Hi,
ich hab eine kleines Programm geschrieben und möchte es auf verschiedenen Rechnern testen. Dabei soll eine kurze Datei mit den Systeminformationen, etc. anglegt werden.
Wie komme ich an die Informationen über die Grafikkarte (Modell+RAM)?
Wo finde ich den RAM des gesamten Systems?Danke,
don_basto
-
WMI mit Win32_VideoController
-
Muss WMI denn sein? Sieht auf den ersten Blick umständlich aus, für die paar Informationen, die ich brauche ..
-
Ich kapier WMI nicht. Ich bin bisher um COM herumgekommen und es fällt mir schwer, den Kode aus dem MSDN zu verstehen. Und zum rumprobieren fehlt mir eine Übersicht über Daten, welche sich über WMI ermitteln lassen.
Habt ihr nützliche Links oder Hinweise zu dem Thema?
-
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/computer_system_hardware_classes.asp
http://www.google.de/search?q=wmi+c%2B%2B+site%3Acodeproject.com
-
Mit WMI ist das ein ordentliches Gefummel. Will mir eine Klasse schreiben, welche mir die COM-Sachen versteckt. Hab aber Probleme mit dem BSTRs.
Wie bekomme ich einem BSTR in einen std::string?
Oder in einen char*?
[EDIT2]
Hier meine Lösung zum konvertieren von BSTR nach char*. Ich hab den Kode der ersten Fkt. im Netz gefunden und die zweite Fkt. für die Rückwandlung aus der ersten Fkt. durch probieren modifiziert.char* convertBSTR(BSTR str) { if(!str) return NULL; DWORD cb,cwch = ::SysStringLen(str); char *szOut = NULL; if(cb = ::WideCharToMultiByte(CP_ACP, 0, str, cwch + 1, NULL, 0, 0, 0)) { szOut = new char[cb]; if(szOut) { szOut[cb - 1] = '\0'; if(!::WideCharToMultiByte(CP_ACP, 0, str, cwch + 1, szOut, cb, 0, 0)) { delete []szOut; szOut = NULL; } } } return szOut; } BSTR convert2BSTR(const char* str) { if(!str) return NULL; int cwch, cb = 0; for (const char* i = str; *i != '\0'; ++i, ++cb); wchar_t* buf = NULL; if (cwch = ::MultiByteToWideChar(CP_ACP, 0, str, cb+1, NULL, 0)) { buf = new wchar_t[cwch]; if (buf) { if (!::MultiByteToWideChar(CP_ACP, 0, str, cb+1, buf, cwch)) { delete [] buf; buf = NULL; return NULL; } } } BSTR bstrOut = ::SysAllocString(buf); delete [] buf; return bstrOut; }[/EDIT2]