Ressourcen (z.B. Pics...) in eine exe einbetten



  • Hallo,

    ich würde gerne mit dem Borland C++ Builder eine .gif oder jpg.... in mein Programm einbauen, das sich dann auf dem Rechner extrahiert, sobald das Programm startet. Wie kann man das machen?

    MFG Toddy



  • Hallo

    Als Ressource einbinden (nicht als Bitmap sondern als binäres RC_DATA), dann über TResourceStream einlesen und in ein passendes TJPEGBitmap einlesen.

    bis bald
    akari





  • Hallo,

    vielen Dank für eure Antworten, die haben mir sehr weitergeholfen. Nun habe ich noch 2 Fragen:

    1. Ich möchte die .jpg am Ende des Programms wieder löschen, weil das nur eine temporäre Datei ist. Wie stell ich das an, sodass die auch wirklich zu 100% verschwindet?

    2. Einen Code für das entpacken, den ich gefunden hab sieht ungefähr so aus:

    unsigned char *FilePtr;
            unsigned long FileSize;
            HANDLE file_handle;
            char ResourceName[]="Test";
            char filename[64];
            unsigned long numWritten;
    
            ResourceH=FindResource(NULL,ResourceName,"BINARY");
            ResourceHGlobal=LoadResource(NULL,ResourceH);
            FileSize=SizeofResource(NULL,ResourceH);
            FilePtr=(unsigned char*)LockResource(ResourceHGlobal);
            snprintf(filename,62,"%s.sys",ResourceName);
            file_handle=CreateFile(filename,FILE_ALL_ACCESS,0,NULL,CREATE_ALWAYS,0,NULL);
    
            while(FileSize--)
            {
                    WriteFile(file_handle,FilePtr,1,&numWritten,NULL);
                    FilePtr++;
            }
            CloseHandle(file_handle);
    

    Das war ein Beispiel wie man das für Treiber macht, aber ich möchts 1. für ein Bild und 2. SOLL es nicht im selben Verzeichnis wie die exe entpackt werden, sondern z.B. in C:\Programme. Könnt ihr mir helfen?

    Danke

    Toddy



  • Warum willst du deine extrahierten Bilder überhaupt als Dateien abspeichern?



  • Naja das soll sozusagen ein verstecktes Bild sein, das man z.B. mit einer bestimmten Eingabe extrahiert, und zwar in einem anderen Verzeichnis als die exe selbst, damit das nur die "Eingeweihten" wissen. Und außerdem soll das Bild dann noch bei der Laufzeit der exe gesichert werden, da es danach verschwindet. So kann ich immer mit Freunden Bilder etc. austauschen 😉



  • Damit du richtig abspeicherst mußt du eigentlich nur den Filenamen ändern. So z.Bsp.

    snprintf(filename,62,"c:\\Programme\\%s.jpg",ResourceName); //wenn es ein jpg ist natürlich
    

Anmelden zum Antworten