CD ID Auslesen
-
Hmmm..jetzt hab ich nur noch eine Fehlermeldung :
`Handle' undeclared (first use this function)Wie muss ich Handle deklariren ?
-
MCI_OPEN_PARMS mciOpenParams; // Hier das entsprechende CD-ROM Device öffnen! => siehe Visual Basic Code MCIDEVICEID handle = mciOpenParams.wDeviceID;
-
hmmm funzt irgendwie nich...
Hier mal der komplette Code :#include <sys/types.h> #include <dirent.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <windows.h> using namespace std; int main() { DIR *dir; struct dirent *dirzeiger; char quit; MCI_INFO_PARMS mip; char szIdentity[20]; long ret; MCI_OPEN_PARMS mciOpenParams; quit = '\0'; /* Das Verzeichnis öffnen */ if((dir=opendir("I:\\")) == NULL) { cout << "Fehler bei opendir ..." << endl; return EXIT_FAILURE; } /* Das komplette Verzeichnis auslesen */ while((dirzeiger=readdir(dir)) != NULL) cout <<((*dirzeiger).d_name)<<endl; /* Lesezeiger wieder schliessen */ MCIDEVICEID handle = mciOpenParams.wDeviceID; memset(&mip, 0, sizeof(mip)); mip.lpstrReturn = szIdentity; mip.dwRetSize = sizeof(szIdentity); ret = mciSendCommand(handle, MCI_INFO, MCI_INFO_MEDIA_IDENTITY, (DWORD)&mip); if(closedir(dir) == -1) cout <<("Fehler beim Schliessen von I"); while (quit != 'q') { cout << szIdentity << endl; cout << "Press q to quit " << endl; cin >> quit; } return EXIT_SUCCESS; }
-
WTF wie kommst du jetzt auf opendir/readdir?
-
wie muss ich das Laufwerk denn sonst öffnen ??
(wie gesagt..hab KEINE ahnung )
-
Liest du eigentlich was ich schreibe?
sieh dir den Visual Basic Code an
-
und wo steht der ?? hier im Forum ?
Bitte mal den Link angeben.
-
http://www.cdarchiv.de/cdarchiv2005/developer.asp
Ich dachte daher hast du den Code...
-
Da finde ich nur c++ code..und bau mir immer mehr fehlermeldungen ein.
Ist das den so kompliziert?
-
Da finde ich nur c++ code..
Dann ist dir nicht mehr zu helfen. Tschüss.
-
Dass sich immer alle anpissen, wenn sie mal nen code rausrücken sollen, ist einfach zum Kotzen. Ich wollte eine Hilfe, und keine Schnitzeljagd..
Wahscheinlich kannst du es ja selber nicht
-
Kannste für 1,50 Euro von mir haben.
-
TdB4711 schrieb:
Hallo zusammen

Ich bin absoluter Anfänger , möchte aber gerne in einem C-Proggie die CD ID auslesen, die zur CDDB abfrage benötigt wird.
Auf einer Seite habe ich folgenden Beispielcode gefunden// Hier das entsprechende CD-ROM Device öffnen! ... MCI_INFO_PARMS mip; char szIdentity[20] memset(&mip, 0, sizeof(mip)); mip.lpstrReturn = szIdentity; mip.dwRetSize = sizeof(szIdentity); ret = mciSendCommand(Handle, MCI_INFO, MCI_INFO_MEDIA_IDENTITY, (DWORD)&mip); // In szIdentity steht nun die Identity der eingelegten CD.Wie ihr euch sicher denken könnt, hagelt es fehlermeldungen, wenn ich dieses zu compilieren versuche.
Könnt ihr mir da weiterhelfen, Bitte mit Code.
Laufwerk kann ruhig erstmal Fest "D:\" sein, zum ausprobieren reicht es dann.Dank euch im voraus

Mit CreateFile müsstest du eigentlich auch das Device öffnen können, in etwa so:
HANDLE Handle = CreateFile( "\\\\.\\D:", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL );Hinterher solltest du das Handle mit "CloseHandle" wieder schließen. Der Pfad vom CD-Laufwerk muss so kryptisch sein, der Buchstaben 'D' bezeichnet halt den Laufwerks-Buchstaben, ohne Escape-Sequenzen sieht der Pfad so aus:
\.\D:
Zwischen CreateFile und CloseHandle muss dann das mciSendCommand; und wenn Fehler kommen, dann schreib am Besten hin, welche Fehler das sind
-
Mitlerweile sieht der Code so aus :
Code wurde der Übersichthalber entfernt, da eh Fehlerhaft :DEs kommen keine Fehlermedungen beim Compilieren, aber in dem Array stehen nur kryptische zeichen, aus denen ich keine ID erstellen kann.
Was mach ich wieder verkehrt ?
-
Ich habs

So Funzt es bei mir :
#include <sys/types.h> #include <dirent.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <windows.h> using namespace std; int main() { DIR *dir; struct dirent *dirzeiger; char quit; MCI_INFO_PARMS mip; MCI_OPEN_PARMS mop; char szIdentity[20]; MCIERROR error; char fehlertext [1024]; long ret; long dvid; quit = '\0'; memset(&mip, 0, sizeof(mip)); mip.lpstrReturn = szIdentity; mip.dwRetSize = sizeof(szIdentity); mop.lpstrDeviceType= (LPSTR)MAKELONG(MCI_DEVTYPE_CD_AUDIO, 0); mop.lpstrElementName="i:"; error =mciSendCommand(0,MCI_OPEN,MCI_OPEN_SHAREABLE|MCI_OPEN_ELEMENT|MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID,(DWORD)&mop); mciGetErrorString(error,fehlertext,1024); cout <<"return= "<<fehlertext <<endl; dvid = mop.wDeviceID; cout << "handle : "<<dvid<<endl; error = mciSendCommand(dvid, MCI_INFO, MCI_INFO_MEDIA_IDENTITY, (DWORD)&mip); mciGetErrorString(error,fehlertext,1024); cout <<"return= "<<fehlertext <<endl; cout << "id= "; for(int i=0;i<sizeof(szIdentity);i++) { cout << dec << szIdentity[i]; } cout << endl; while (quit != 'q') { cout << "Press q to quit " << endl; cin >> quit; } CloseHandle; return EXIT_SUCCESS; }