Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Exe in Resource einfügen und im Programm lokal laden (https://www.delphipraxis.net/129856-exe-resource-einfuegen-und-im-programm-lokal-laden.html)

Klaus01 26. Feb 2009 21:13

Re: Exe in Resource einfügen und im Programm lokal laden
 
Zitat:

Zitat von J Kadison
OOOOOOKAY ^^ überredet ich nehm doch die TEMP methode ^^

wie muss ich das denn dann aufrufen?

Delphi-Quellcode:
ExtractRes('EXEFILE', 'MYRES', 'C:\...\meineExe.exe')
oder wie?

siehe Beitrag #2

Grüße
Klaus

taaktaak 26. Feb 2009 21:15

Re: Exe in Resource einfügen und im Programm lokal laden
 
na, analog des Beispiels
Delphi-Quellcode:
NOTEPAD_FILE := GetTempDir + 'Notepad_FROM_RES.EXE';
hier wird der 3te Parameter "zusammengebaut"

J Kadison 26. Feb 2009 21:17

Re: Exe in Resource einfügen und im Programm lokal laden
 
OOOOOKAY ich glaub cih geh jetzt vom Coumuter ... ich verpeil ja heut alles XD

und DANKESCHÖÖÖÖÖÖN !!! :cheers:

taaktaak 26. Feb 2009 21:18

Re: Exe in Resource einfügen und im Programm lokal laden
 
Das ist manchmal eine weise Entscheidung!
Morgen geht's bestimmt wieder besser von der Hand.
:thumb:

Micha88 27. Feb 2009 11:31

Re: Exe in Resource einfügen und im Programm lokal laden
 
Delphi-Quellcode:
TESTFILE EXEFILE C:\Windows\Notepad.exe
Kann man nicht auch

Delphi-Quellcode:
TESTFILE BIN C:\Windows\Notepad.exe
nehmen?

Gabberjool 9. Mär 2009 08:46

Re: Exe in Resource einfügen und im Programm lokal laden
 
Wie du siehst

Zitat:

MYPROGRAM1 RCDATA PRELOAD irgendeinprogramm.exe
Zitat:

ResStream := TResourceStream.Create(hinstance,'MYPROGRAM1',RT_R CDATA);
ResStream.SaveToFile('irgendeinprogramm.exe');
ist es egal, du musst nur im Code dan die richtigen angeben.
Bei dir also...

Zitat:

ResStream := TResourceStream.Create(hinstance,'TESTFILE',BIN);
ResStream.SaveToFile('irgendeinprogramm.exe');

schöni 9. Mär 2009 11:00

Re: Exe in Resource einfügen und im Programm lokal laden
 
Zitat:

Zitat von taaktaak
Moin, Moin.
Vorgehensweise ist mir verständlich.
Aber: Wozu soll das gut sein?

Ich sehe auf Anhieb eine Anwendung. Ich hatte mal den Ehrgeiz, den integrierten Debugger aus Lazarus zu extrahieren, um die Schnittstelle zum GDB zu gewinnen, da dieser letzlich augerufen wird. Das Problem war, das ich ein IDE Projekt mit Delphi realisiert hatte, das sich nicht ohne Änderungen auf Lazarus portieren ließ. So wollte ich den Debugger aus Lazarus haben, um ihn in meiner IDE verwenden zu können. Die Schnittstelle in eine Dll packen scheidet aus, da die Debuggerschnittstelle Strings übergibt und die Unit ShareMem bzw. FastMMxxx unbekannt sind. Ich brauche den Debugger also entweder als Stanalone Debugger, der per OLE in die IDE eingebettet werden kann oder die hier angestrebte Lösung, die Exe aus einer Ressource heraus zu starten.

Die betreffenden Units mit Delphi übersetzen scheidet wegen einiger wesentlicher Inkompatibilitäten syntaktischer Natur ebenfalls aus.

Zitat:

Zitat von taaktaak
Um sicherzustellen, dass die Programme NUR durch die Delphi-Anwendung gestartet werden können?

Kann man die einzelnen Programme nicht mit Hilfe anderer Software wieder aus der Ressource extrahieren?

Schon möglich. Ich denke auch, das diese Vorgehensweise als Programmschutz nicht ausreichend ist.
Aber das hängt vom Wert der zu schützenden Software ab.

Die Vorgehensweise ist mir auch klar. Aber warum muss ich, wenn ich eine Ressource extrahieren will, diese speichern? Muss ich sie dann nicht vielmehr lesen?
Delphi-Quellcode:
function ExtractRes(ResType, ResName, ResNewName: string): Boolean;
var
  Res: TResourceStream;
begin
  Result := False;
  Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType));
  try
    Res.SavetoFile(ResNewName);
    Result := True;
  finally
    Res.Free;
  end;
end;

Gabberjool 10. Mär 2009 09:42

Re: Exe in Resource einfügen und im Programm lokal laden
 
bei mir funktioniert irgendwie keiner dieser varianten... ausser *.exe, schafe ich alle dateien einzubinden nur zur *.exe einbindung / Ausführung find ich keine hilfe... hmmm...

Gabberjool 11. Mär 2009 18:12

Re: Exe in Resource einfügen und im Programm lokal laden
 
Zitat:

Zitat von Satty67
Eintrag in der RC-Datei könnte so aussehen (ob PRELOAD OK ist, weis ich aber auch nicht, verwende ich immer für meine eingebundenen Ressourcen ;) :
Code:
MYPROGRAM1 RCDATA PRELOAD irgendeinprogramm.exe
Aus der Ressource wieder als Datei speichern:
Delphi-Quellcode:
  ResStream := TResourceStream.Create(hinstance,'MYPROGRAM1',RT_RCDATA);
  ResStream.SaveToFile('irgendeinprogramm.exe');
Am besten im Temp-Ordner von Windows speichern und von dort mit ShellExecute und den entsprechenden Parametern aufrufen.

Du willst es wahrscheinlich nicht zwischenspeichern, aber dazu hab' ich keine Ahnung.

Bei mir sagt der immer das er ResStream ned kennt... ich kirgs mit egal welcher art nicht hin eine normale exe in eine delphi exe zu binden... alle ander dateien kein problem aber exe will der ned nehmen...

weiss einer en vorschlag

Luckie 11. Mär 2009 19:10

Re: Exe in Resource einfügen und im Programm lokal laden
 
Was heißt er kennt ResStream nicht? Hast du die Variable auch irgendwo deklariert? Lass das PRELOAD mal weg. Wird das Ressourcenscript denn auch richtig compiliert?

Desweiteren wäre es wünschenswert, wenn du etwas auf korrektes Deutsch achten würdest in deinen Beiträgen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz