Wie Wechseldatenträger ermitteln?
-
Hi,
ich beschäftige mich seit einiger Zeit schon mit C++ und versuche mich gerade an den MFC. Ich möchte ein einfaches Programm schreiben, daß objekt-orientiert gestaltet ist und mir einfach alle Wechseldatenträger nennt, wenn möglich mit zugehöriger Hardwareidentifikation (Hersteller, Produkttyp und Seriennummer).
Es ist naheliegend, daß ich möglichst über die MFC Klassen gehen möchte, leider finde ich aber im MFC Vererbungs-Diagramm keine passenden Klassen. CFile scheint ja z.B. dafür absolut unbrauchbar. Was kann ich tun? Die MSDN ist irgendwie keine gute Hilfe.
Grüße,
Wan-Hi
P.S.: Sorry, ich bin ein ziemlicher Anfänger in Sachen Windows Programmierung. Kann mir einer ein leicht verständliches Buch empfehlen? Ich komme übrigens aus der Java-Ecke, falls der Hinweis hilft.
-
Servus,
den folgenden Source hatte ich mir mal irgendwoher besorgt:
CString strReturn, strDrive="A:\\", szBuffer; ULARGE_INTEGER nDummy, nTotalBytes, nFreeBytes; int iBytes = 0; DWORD dwDrives = GetLogicalDrives(); char szDrive[8]="A:\\", szVolName[80], szFSName[80]; bool bQueryVol; strReturn += "[Laufwerke]\n"; for(int i=0, j=1; i<26; i++, j*=2) { if(dwDrives & j) { szDrive[0] = i + 'A'; strReturn += szDrive; bQueryVol = false; switch(GetDriveType(szDrive)) { case DRIVE_UNKNOWN: strReturn += "Unbekannt"; break; case DRIVE_NO_ROOT_DIR: strReturn += "? Kein Root-Verzeichnis ?"; break; case DRIVE_REMOVABLE: strReturn += "Wechseldatentraeger"; bQueryVol = true; break; case DRIVE_FIXED: strReturn += "Festplatte"; bQueryVol = true; break; case DRIVE_REMOTE: strReturn += "Netzwerkverknuepfung"; break; case DRIVE_CDROM: strReturn += "CDROM"; break; case DRIVE_RAMDISK: strReturn += "RAM-Disk"; bQueryVol = true; break; } if(bQueryVol) { if(GetDiskFreeSpaceEx(szDrive, &nDummy, &nTotalBytes, &nFreeBytes)) { iBytes = nTotalBytes.QuadPart/1048576; if(iBytes < 1024) szBuffer.Format(", %5d MB Kapazitaet", iBytes); else szBuffer.Format(", %5.1f GB Kapazitaet", (float) iBytes / 1024); strReturn += szBuffer; iBytes = nFreeBytes.QuadPart/1048576; if(iBytes < 1024) szBuffer.Format(", %5d MB frei", iBytes); else szBuffer.Format(", %5.1f GB frei", (float) iBytes / 1024); strReturn += szBuffer; } if(GetVolumeInformation(szDrive, szVolName, 79, NULL, NULL, NULL, szFSName, 79)) strReturn += ", "; strReturn += szFSName; } } }in strReturn stehen dann alle Laufwerke. Du musst ja nicht alle auflisten, sondern kannst nur bei DRIVE_REMOVABLE reagieren.
Wan-Hi schrieb:
Die MSDN ist irgendwie keine gute Hilfe.
Sagt man nicht.... (ist auch nicht so) 
*winke*
HellsgoreEDIT:
Achso zu den Büchern. Du kannst, gerade wenn du das liest, oben rechts in der Ecke auf den Link "Bücher" klicken. Dieser leitet dich dann an dein Ziel
EDIT2:
Ansonsten ein Tut C++ in 21 Tagen:
http://download.pearsoned.de/leseecke/VCPLUS6_21Tg/data/start.htmEDIT512363 *ahhh*:
Bücher
http://www.c-plusplus.net/forum/viewtopic.php?t=79616
-
vielen dank für die hilfe. dein beispiel setzt leider nur auf die win32 api, mal vom CString abgesehen, was ich eigentlich umgehen wollte. aber ich werde es trotzdem ausprobieren.
zur MSDN: ich habe sehr große schwierigkeiten, mich darin zurechtzufinden, da themen so stark ineinander übergreifen und man am anfang überhaupt nicht weiß, wo man suchen muß. gibt es dazu vielleicht einige tips, die den umgang damit erleichtern?
wan-hi
-
Ich glaube, mit der MSDN hat jeder seinen Kampf am Anfang.

Es hilft nur, viel damit arbeiten, dann lernst du den Umgang.
-
*AllerAnfangIstSchwer*
Mach dir nichts daraus.... für jeden war am Anfang die MSDN ein kleines Rätsel. Du brauchst im Prinzip nur Übung das ist alles. Grundlegende Sachen wie konvertieren von int in string, Zeigertechniken, Polymorphie, Vererbung etc. lernst du nur durch Übung aber vielleicht auch durch ein bisschen Logik
. Ich empfehle dir daher einfach mal ein paar Tuts (Browser auf, google.de, "c++ Tutorial") zu machen um dich ein bisschen mit den Grundthemen zu beschäftigen. Ansonsten Üben Üben Üben..... 
*winke*
Hellsgore