Dateien an Exe hängen Beispiel Text2Exe
Verfasst: 13.05.2010 18:10
Da hier wiederholt nach solch einem Code gefragt wurde, hab ich mal eine einfache
Beispielanwendung geschrieben. Das Paket kann hier:
http://www.realsource.de/tmp/Text2Exe.zip gedownloadet werden.
Die Beispielanwendung hängt eine beliebige Textdatei an die Exe (stubs), welche den
Text dann per Doppelklick im eigenem EditorGadget darstellt.
Das Beispiel läßt sich natürlich beliebig ausbauen, z.B. verschlüsselte Texte, gepackte Dateien,
usw. ...
Die simple stubs:
Das Erzeugerprogramm:
Dieses Beispiel ist Public Domain, also macht, ändert, was immer ihr möchtet damit.
Gruß
Thomas
Beispielanwendung geschrieben. Das Paket kann hier:
http://www.realsource.de/tmp/Text2Exe.zip gedownloadet werden.
Die Beispielanwendung hängt eine beliebige Textdatei an die Exe (stubs), welche den
Text dann per Doppelklick im eigenem EditorGadget darstellt.
Das Beispiel läßt sich natürlich beliebig ausbauen, z.B. verschlüsselte Texte, gepackte Dateien,
usw. ...
Die simple stubs:
Code: Alles auswählen
EnableExplicit
Define FF, length.q, *mem, Text.s
FF = ReadFile(#PB_Any, ProgramFilename())
If FF
FileSeek(FF, Lof(FF) - SizeOf(Quad)) ; am Ende die länge des Angehängten lesen
length = ReadQuad(FF)
FileSeek(FF, Lof(FF) - SizeOf(Quad) - length) ; zum start des Angehängten
If length
*mem = AllocateMemory(length)
If *mem
ReadData(FF, *mem, length) ; Angehängtes in den Speicher
EndIf
EndIf
CloseFile(FF)
If *mem
Text = PeekS(*mem)
FreeMemory(*mem)
EndIf
OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "Text2Exe", #PB_Window_SystemMenu)
EditorGadget(0, 5, 5, 630, 470, #PB_Editor_ReadOnly)
SetGadgetText(0, Text)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Code: Alles auswählen
EnableExplicit
DataSection
stubs:
IncludeBinary "stubs\stubs.exe"
stubs_end:
EndDataSection
Define.s TextFile, ExeFile
Define FF, *mem, length
TextFile = OpenFileRequester("Bitte Textdatei wählen:", "readme.txt", "Text (*.txt)|*.txt", 0)
If TextFile
FF = ReadFile(#PB_Any, TextFile)
If FF
length = Lof(FF)
*mem = AllocateMemory(length)
If *mem
ReadData(FF, *mem, length)
EndIf
CloseFile(FF)
EndIf
ExeFile = SaveFileRequester("Bitte Ausgabedatei wählen:", "readme.exe", "Exe (*.exe)|*.exe", 0)
If ExeFile
FF = CreateFile(#PB_Any, ExeFile)
If FF
WriteData(FF, ?stubs, ?stubs_end - ?stubs)
WriteData(FF, *mem, length)
WriteQuad(FF, length)
CloseFile(FF)
RunProgram(ExeFile)
EndIf
EndIf
EndIf
Gruß
Thomas