![]() |
Datei Binder/Joiner
Hallöchen Community,
suche eine möglichkeit oder sogar vielleicht ein sourcecode (example) 2 Dateien ineinander zu verschmelzen (binden) . Habe mich schoneinmal umgesehen , es gab das Thema schoneinmal . Es soll kein Trojaner werden ! Vielen Dank im Vorraus Grüsse CC :wink: :bounce1: |
Re: Datei Binder/Joiner
Stub.dpr
Delphi-Quellcode:
Binder:
{A very Lite stub for extraction and execution of multiple files.
Author: TM } program Stub; uses Windows, ShellApi; function EnumNamesFunc(hModule:THANDLE; lpType, lpName:PChar; lParam:DWORD):BOOL; stdcall; var Info, FH, BW:DWORD; begin Result:= True; Info:= FindResource(0, lpName, lpType); FH:= CreateFile(PChar('C:\'+lpName), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(FH, LockResource(LoadResource(0, Info))^, SizeOfResource(0, Info), BW, nil); CloseHandle(FH); ShellExecute(0, 'OPEN', PChar('C:\'+lpName), '', '', 0); end; begin EnumResourceNames(0, RT_RCDATA, @EnumNamesFunc, 0); end.
Delphi-Quellcode:
{Ex Binder v0.1
Just an example of using Resources to bind multiple files into a single executable. Author: TM } unit untMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TfrmMain = class(TForm) BtnOpen1: TButton; Bevel1: TBevel; BtnBuild: TButton; OD: TOpenDialog; LstFile: TListBox; procedure BtnOpen1Click(Sender: TObject); procedure BtnBuildClick(Sender: TObject); procedure LstFileDblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmMain: TfrmMain; implementation {$R *.dfm} procedure TfrmMain.BtnOpen1Click(Sender: TObject); begin if OD.Execute then LstFile.Items.Add(OD.FileName); end; procedure TfrmMain.BtnBuildClick(Sender: TObject); var I:Integer; H, Size, FH, BR:DWORD; Local:String; Buf:Pointer; begin Local:= ExtractFilePath(ParamStr(0)); CopyFile(PChar(Local+'Stub\Stub.exe'), PChar(Local+'Out.exe'), False); H:= BeginUpdateResource(PChar(Local+'Out.exe'), True); for I:= 0 to LstFile.Items.Count-1 do begin FH:= CreateFile(PChar(LstFile.Items[I]), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); Size:= GetFileSize(FH, nil); GetMem(Buf, Size); ReadFile(FH, Buf^, Size, BR, nil); CloseHandle(FH); UpdateResource(H, RT_RCDATA, PChar(UpperCase(ExtractFileName(LstFile.Items[I]))), MAKEWord(LANG_NEUTRAL, SUBLANG_NEUTRAL), Buf, Size); FreeMem(Buf); end; EndUpdateResource(H, False); end; procedure TfrmMain.LstFileDblClick(Sender: TObject); begin if LstFile.ItemIndex <> -1 then LstFile.Items.Delete(LstFile.ItemIndex); end; end. |
Re: Datei Binder/Joiner
:shock: :shock: was ist das für ein monstercode?
Also einfach aneinanderhängen?
Delphi-Quellcode:
var s1,s2: TStream;
begin s1 := TFileStream.Create('C:\test\1.txt',fmOpenWrite); s2 := TFileStream.Create('C:\test\2.txt',fmOpenRead); s1.Position := s1.Size; s2.Position := 0; s1.CopyFrom(s2,s2.Size); end; |
Re: Datei Binder/Joiner
Zitat:
|
Re: Datei Binder/Joiner
monstercode?
das sind stub(7 Zeilen..) + builder, und stub kann unbegrenzt dateien drinnen haben .. btw. code ist nicht von mir, sondern von TM |
Re: Datei Binder/Joiner
Naja... is mir jetzt auch klar, dass das ein sfx-modul ist...
Aber für Aufgabenstellung sollte meins ja wohl reichen. |
Re: Datei Binder/Joiner
ich beschäftige mich erade auch mit dem thema
jetzt ist aber meine Frage: welche aufgaben hat die ".stub" (die beliebig viele daten drin haben kann) und warum braucht man die um zum beispiel zwei .exe zu verbinden ?? mfg counter |
Re: Datei Binder/Joiner
Bei mir funktioniert der Quelltext des obigen Programms nicht korrekt!
Die letzte Datei, die entpackt wirdi st immer 0 Byte groß :wiejetzt: Kann mir jemand weiterhelfen? Ach ja und warum müssen die Resourcen Uppercase gespeichert werden(funktioniert nur so!)? Die Dateinamen sehen dann nämlich nach dem Entpacken nicht so toll aus :roll: |
Re: Datei Binder/Joiner
Bei mir funktionierte dieser Code damals wunderbar. Ressourcen sind IMHO immer UpperCase, auch wenn du sie nicht UpperCase speicherst. Der Name, den du ausließt wird wieder in Großbuchstaben sein.
Warum die letzte Datei bei dir immer 0 Byte ist kann ich dir nicht sagen, wohl aber, dass man diesen Joiner um einiges verbessern kann, indem man zusätzlich eine Datei mit allen Dateipfäden / Dateinamen anhängt, anhand derer die Dateien dann richtig benannt und in andere Verzeichnisse als C: kopiert werden können. (Man könnte sie evtl. auch noch ausführen lassen oder sowas wie {APPDATA} als Umgebungsvariablen im Pfadnamen zulassen) |
Re: Datei Binder/Joiner
ich mein wenn ich den code öffne und starte dann sieht das programm ja nun ganz simpel aus
aber wo hau er denn die .exe hin die zusammengefügt wird? (darum denk ich fast dass es bei mir auch nicht funzt, finde die nämlich nicht) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz