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