mp3 abspielen mit einem C++ Programm



  • Hmm, das Programm will nicht so wie ich will,

    und zwar geht es darum, automatisch das Verzeichnis zu finden, dachte dass es mit %username% gehen würde..

    Habe folgende Zeilen eingefügt:

    char username[256] = {0};
    unsigned long laenge = sizeof(username);
    
    GetUserName(username, &laenge);
    

    Diese Zeile

    cout << "\nUsername: " << username;
    

    gibt mir auch korrekt den Usernamen an.

    Wenn ich jetzt aber schreibe

    ShellExecute(NULL,"open","C:\\Dokumente und Einstellungen\\%username%\\Desktop\\Mucke\\JOIN ME.mp3",NULL,NULL,SW_SHOWNORMAL);
    

    wird der Quelltext zwar kompiliert; jedoch wird die mp3 nicht abgespielt.
    Der Pfad ist korrekt, nur scheint das mit dem %username% nicht klappen.

    Wie bekomme ich es hin, dass die mp3 auf allen Rechnern abgespielt wird (vorausgesetzt natürlich, dass die mp3 im Ordner Mucke aufm Desktop liegt)?



  • Das %username% wird nicht einfach, ohne noch etwas zu tun, durch den wirklichen aktuellen Benutzernamen ersetzt. Es gibt dafür eine spezielle Funktion:

    char path[MAX_PATH + 1];
    
    // ersetzt in % eingefasste Umgebungsvariablen
    ::ExpandEnvironmentStrings("C:\\Dokumente und Einstellungen\\%username%\\Desktop\\Mucke\\JOIN ME.mp3", path, MAX_PATH + 1);
    
    ::ShellExecute(NULL, "open", path, NULL ,NULL, SW_SHOWNORMAL);
    

    Aber das war jetzt kein Problem mehr, das in dieses Forum gehört (WinAPI-Funktionen). Prüfe aber zuerst, ob die mp3-Datei wirklich in diesem Pfad liegt...;)

    MfG,

    Probe-Nutzer



  • Hey Probe-Nutzer,

    vielen Dank für deine Mühen, jetzt ist es PERFEKT 🙂 👍

    Ja, werde in Zukunft die Fragen in den richtigen Unterforen stellen 🙂 👍

    Vielen Dank noch mal 🕶

    Einen schönen Tag noch an die Community



  • $h4rk schrieb:

    ... hauptsache die mp3 lässt sich auf jedem Rechner abspielen..)

    Bist du sicher, dass dieser Code auch auf älteren Betriebssystemen wie ME den richtigen Effekt hat.

    @Alle, die die Portabilität aussen vor lassen wollen:
    Notfalls kann mans ja so lösen;

    #ifdef linux
      system(...)
    #else
      ShellExecute(...)
    #endif
    

    Außerdem kannst du mit externen Playern wie VLC einfacher die Controls (Play, Stop usw.) anzeigen, wenn du sie brauchst.

    Mit Lame könnte es theorteisch patentrechtliche Probleme Begen (MP3 -> Fraunhofern). Wenn du als Hintergrundmusik etwas abspielen möchtest, kansnt du genauso OGG nehmen, das ist meines Wissens komplett frei.
    Sucht doh auch einfach mal auf Sourceforge nach "C++ MP3 Player". Bestimmt finden sich da interessante Sachen.

    mfg, Hans


Anmelden zum Antworten