Musik in exe einkompilieren



  • hi
    ist es möglich eine .mp3 datei oder so in die exe miteinzukompilieren
    und sie auch von dort aus abzuspiele während das programm lauft?
    mit welchen musikdateien würde das funktionieren und wie?
    danke



  • Man kann so ziemlich alles in eine exe reinkompilieren (einfach als Resource einbinden), ob man das mit Bordmitteln auch direkt abspielen kann ohne ne temporäre Datei davon zu erzeugen weiss ich nicht.



  • danke für deine Hilfe
    also wie mach ich des das ich es
    A. in die exe einkompiliere (benutze dev c++ oder code::blocks)
    B. während der laufzeit die datei ausgebe um sie abzuspielen können



  • Getrud schrieb:

    B. während der laufzeit die datei ausgebe um sie abzuspielen können

    Stichwort FindResource/LoadResource/LockResource/SizeofResource/WriteFile.



  • habs jetzt mal so gemacht:

    #include <windows.h>
    
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        HMODULE hModule = GetModuleHandle(NULL);                
        HRSRC hRes = FindResource(hModule,"113-sido-1000_fragen","mp3");
        LoadResource(hModule,hRes );
        PlaySound("113-sido-1000_fragen.mp3",  hModule,SND_APPLICATION);
        return 0;
    }
    

    das programm sollte eigentlich wenn man es öffnet die mp3 abspielen
    aber es tut sich eigentlich gar nix
    und die exe hat nur 17,8 kb
    hab ich was falsch gemacht beim resourcen einkompilieren?
    ich hab nur das unter kompilier optionen bei resourcen den pfad dazugehtan...
    benutze dev c++.
    oder ist der code falsch?
    Vielen dank 🙂



  • und nicht wundern wegen sido hehe
    das höre ich nicht ist für nen freund



  • Ich glaube, dass PlaySound nur .wav abspielen kann.
    Frag einfach mal den Rückgabewert ab, ob da der Fehler liegt.



  • danke,
    ich habs jetzt mal so gemacht:

    #include <windows.h>
    #include <iostream>
    using namespace std;
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
    
        HMODULE hModule = GetModuleHandle(NULL);                
        HRSRC hRes = FindResource(hModule,"animal08","WAVE");
        HANDLE hGlobMem = LoadResource(hModule,hRes );
        //PlaySound("113-sido-1000_fragen.mp3",  hModule,SND_APPLICATION);
        //PlaySound("animal08.wav",  hModule,SND_APPLICATION);
        sndPlaySound((LPSTR)LockResource(hGlobMem),SND_SYNC | SND_MEMORY);
        system("PAUSE");
        return 0;
    }
    

    das problem liegt wohl daran das ich die .wav falsch eingebunden
    habe. wenn ich sie einbinden will fragt mein kompilier nach einem
    "Build kommando" für die .wav was genau ist das?
    danke



  • Müsste da nicht noch irgendwo nen "#include <meineResourceHeaderDatei.h>" stehen?
    Und: Prüf mal die Rückgabewerte!

    PlaySound() kann ne Wave-Datei direkt aus der Resource abspielen.
    PlaySound(MAKEINTRESOURCE(ResourcenIdentifier),hInstance,SND_RESOURCE);

    siehe auch z.B.: http://flinflon.brandonu.ca/richards/gamehtm/using_resources.htm


  • Mod

    Wie wurde denn die WAV Datei in die Ressource Datei (rc-Datei) eingebunden.

    Nur einfach zum Projekt hinzufügen genügt nicht.
    Im Ressource Editor die entsprechende Datei als Custom-Ressource hinzufügen.

    Bevor Du irgendeine weitere Funktion ausführst, solltest Du auch die Rückgabewerte von FindResource prüfen! GetLastError sagt Dir klar, dass ein Fehler augetreten ist und welcher.



  • ok danke.
    Ich weiß jetzt wo der Fehler liegt.
    Ich hab die Ressource nicht eingebunden?
    Wie funktioniert das denn unter Visual C++ express? (hat kein ress editor)
    Hätte auch Dev oder Code Block falls dafür einer ne anleitung kennt.


Anmelden zum Antworten