CD Track abspielen mit mciSendCommand



  • Hallo zusammen,

    ich möchte mit mciSendCommand() einen Audio-Track einer Musik CD abspielen. Dies bleibt leider ohne Funktion. Das CD-ROM zuckt kurz, aber es kommt keine Musik. Alle anderen bisher getestem Funktionen funktionen. Ich kann die CD-Schublade öffnen, die Anzahl der Titel ermtteln, die aktuelle Position, ... nur Musik kommt keine.

    Hier nun der Aufruf zum Abspielen der Musik:

    mciPlayParms.dwFrom = MCI_MAKE_TMSF(bTrack, 0, 0, 0);
    mciPlayParms.dwTo = MCI_MAKE_TMSF(bTrack, 4, 0, 0);
    mciPlayParms.dwCallback = NULL;
    
    if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_FROM | MCI_TO, (DWORD)(LPVOID)&mciPlayParms))
    {
    	mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
    	return (dwReturn);
    }
    

    Bei der Ausführung der Codezeilen erhalte ich auch keine Fehlermeldung. Es passiert einfach nichts.

    Kann mir hier jemand weiter helfen?
    Wenn es einen anderen Weg gibt, eine Audio-CD mit C++ abzuspielen, dann bin ich auch gerne an dieser interessiert.

    Danke.



  • @mdenning die Funktion liefert einen Fehlercode. Überprüfe den.

    return ist keine Funktion. return dwReturn; reicht. Mit Klammern kann es sogar langsamer werden (der Compiler kann möglicherweise nicht optimieren).



  • Der Returnwert ist 0.



  • mciPlayParms.dwFrom = MCI_MAKE_TMSF(bTrack, 0, 0, 0);
    mciPlayParms.dwTo = MCI_MAKE_TMSF(bTrack, 4, 0, 0);
    

    Check mal die Parameter. Also ... gibt es Track bTrack auch wirklich? Mach da mal ne Konstante rein zum Testen. Und hat der Track auch wirklich 4 Minuten? Vielleicht verweigert das Laufwerk einfach wenn man da einen zu hohe Zeit angibt.

    Davon abgesehen...

    Ich weiss nicht ob ohne MCI_WAIT brauchbare Fehlerwerte zurückkommen. Du könntest mal Probieren was mit MCI_WAIT passiert - nur testweise.

    Und natürlich: check mal ob sich die CD überhaupt auf deinem System abspielen lässt. Bzw. du kannst auch schauen ob du ein fertiges MCI-basiertes CD Player Programm findest. Wäre interessant ob es damit geht.



  • Oh man, das Problem saß wie so oft vor dem Bildschirm, abe durch den Hinweis auf MCI_WAIT bin ich auf den richtigen Weg gekommen. Der Code wie oben abgebildet läuft, aber nicht im Debug-Mode. Im Rahmen der Fehlersuche bin ich immer im Debug-Mode durch den Quellcode gesprungen. In diesem Modus werden aber keine Titel angespielt, nur der Rest funktionierte. Wenn ich das Programm so laufen lassen, werden auch meine gewünschten Titel abgespielt.

    Danke für eure Unterstützung!



  • Ah. Dann funktioniert das Abspielen der CD wohl einfach so dass ein Thread im eigenen Prozess gestartet wird der das übernimmt. Der wird dann natürlich angehalten wenn du im Debugger das Programm anhältst.