# Dll in EXE-Projekt einbinden zum Auslesen



## iLu_is_a_loser (26. Juli 2005)

Ich benütze vc++ 6.0
Wie kann ich eine dll in mein application-projekt einbinden, sodass ich
compiliert nur eine exe-datei hab und mit welcher Funktion kann ich dann die dll wieder auslesen?

greetz iLu


----------



## Tobias K. (26. Juli 2005)

moin


Vielleicht wäre da ein selbstentpackendes Archiv besser.


mfg
umbrasaxum


----------



## Endurion (27. Juli 2005)

Das ist normalerweise eigentlich nicht unterstützt, hier hat jemand aber eine Library für geschrieben:

http://www.joachim-bauch.de/tutorials/load_dll_memory.html/en


----------



## iLu_is_a_loser (27. Juli 2005)

WoW!
Nur.. Mir geht es gar nicht um das Laden einer Dll in der Exe drin! Ich hätte anderst fragen sollen:
"Wie kann ich Dateien mit in eine EXE-Datei  compilieren und auslesen" ?

Gebrauch: Setup z.B.!


----------



## Tobias K. (27. Juli 2005)

moin


Du meinst also mit auslesen nciht das die Dll wieder alleine da stehen soll, sondern wie du sie benutzt, wenn sie mit inner Exe ist?!


mfg
umbrasaxum


----------



## iLu_is_a_loser (27. Juli 2005)

uff.. nein 
was ich will:


-Eine einzige setup.exe datei
Wenn ich sie ausführe, soll sie ein paar funktionen ausführen(deswegen kein selfextraktarchiv) und danach eine datei.dat (mit ca. 100kb) "extrahieren", sodass ich in dem ordner nun eine setup.exe und eine datei.dat habe!


----------



## Endurion (27. Juli 2005)

Das machst du unter Windows am besten mit den Ressourcen. Siehe FindResource,LoadResource,LockResource.
Da bekommst du einen Pointer auf die Daten in deinen Ressourcen innerhalb deiner .EXE-Datei und kannst damit machen, was du möchtest (ausser Reinschreiben latürnich).


----------



## iLu_is_a_loser (29. Juli 2005)

danke für die information.. aber ich hab das ganze ma so probiert:

sprintf(string,"%x",LockResource(LoadResource(0,FindResource(0,MAKEINTRESOURCE(IDI_ICON1),RT_ICON))));

nichma mit nem icon gehts  wie soll das dann mit einer dll/binary file klappen!

kann mir viel leicht jemand ein beispielprojekt in den anhang hängen?


----------



## Tobias K. (29. Juli 2005)

moin


Wenn du im "Antwort-Editor" bist, scroll etwas nach unten.
Klicke dann auf Anhänge verwalten.
Durchsuchen, Datei auswählen.
Auf Hochladen klicken.
Kleines Fenster wieder schliessen.
Antwort zu ende schreiben.
Abschicken.
Fertig.


mfg
umbrasaxum


----------



## iLu_is_a_loser (29. Juli 2005)

Ich hab mein Projekt mal angehängt!
Ich will am Ende einfach nur ein Pointer (BYTE*) auf den Inhalt der Datei haben!
Wäre genial wenn ihr das hinbekommt!

Kurze Frage nebenbei:
Weiß jemand wie ich Visual c++ 6.0 template Buttons während dem Prozess enabled/disabled mache? Mit WM_ENABLE klappts nich 

Im Notfall schreib ich nen Programm, das mir die dll in das Programm added und Funktionen mit Pointerrückgabe so crackt, dass sie mir den Inhalt der Datei zurückgeben! Aber wozu, wenns auch einfacher geht ^.-

Schon mal danke fürs Anguggn!


----------



## Endurion (30. Juli 2005)

Versuchs mal damit:


```
HRSRC hRes = FindResource( hInstance, MAKEINTRESOURCE( ID_PLUGIN ), "BINARY" );
  if ( hRes )
  {
    HGLOBAL hGlob = LoadResource( hInstance, hRes );
    if ( hGlob )
    {
      const BYTE* pData = (const BYTE*)LockResource( hGlob );

      std::printf( "Data Pointer %x - Länge %u", pData, SizeofResource( hInstance, hRes ) );


      UnlockResource( hGlob );
      FreeResource( hGlob );
    }
  }
```


UnlockResource und FreeResource benötigt man laut MSDN zwar eigentlich nicht mehr, ich finde es aber sauberer. Übrigens, versuch nicht, in den Pointer zu schreiben!


----------



## iLu_is_a_loser (30. Juli 2005)

Big THX! auf den letzten parameter "BINARY" hätt ich wohl auch kommen können  
nochmals vielen dank!

greetz


----------

