AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

.exe anhängen ?!

Ein Thema von k4ni · begonnen am 11. Mai 2008 · letzter Beitrag vom 12. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#1

.exe anhängen ?!

  Alt 11. Mai 2008, 14:46
Hallo,

Ich will eine .exe als ressource-datei an mein delphi-programm anhängen.
Hier meine .RC datei:
Code:
1 RC_DATA "MS.exe"
Wie ich sie einbinde
{$R MS.RES} Und so will ich sie ausführen:
ShellExecute(Application.Handle, nil, PChar(1), nil, nil, Sw_show); Aber ich bekomm ne address-vilation. Wieso?
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: .exe anhängen ?!

  Alt 11. Mai 2008, 14:48
Hi,

such mal nach Deinem Topic hier im Forum, das wurde schon mal besprochen :Zwinker:
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: .exe anhängen ?!

  Alt 11. Mai 2008, 14:54
Zitat von Die Muhkuh:
Hi,

such mal nach Deinem Topic hier im Forum, das wurde schon mal besprochen :Zwinker:
Hmm? Ich hab das noch gar nie versucht :/
Und ich hab schon gesucht. Ich hab nur Tutorials gefunden mit dem man WAVE/BITMAP dateien anhängen kann.
Ich denke es hat was mit meiner .RC datei zu tun, weiß aber nicht was :/
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: .exe anhängen ?!

  Alt 11. Mai 2008, 15:02
Du musst imho die Resource erst extrahieren, bevor Du sie starten kannst.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: .exe anhängen ?!

  Alt 11. Mai 2008, 15:12
machs wie hier mit der mp3 beschrieben ist, nur am ende natürlich nicht abspielen, sonder die exe von der platte aus starten!!

resourcen
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: .exe anhängen ?!

  Alt 11. Mai 2008, 15:17
Okay danke.
Habs jetzt so hinbekommen:
Delphi-Quellcode:
  ResStream := TResourceStream.CreateFromID(HInstance, 1, 'RC_DATA');
  ResStream.SaveToFile('ms.exe');
  ResStream.Free;
Gibts auch einen weg das mit ShellExecute oder CreateProcess zu starten ohne zu speichern?
  Mit Zitat antworten Zitat
Carlo91

Registriert seit: 3. Jun 2006
Ort: Bremen
107 Beiträge
 
Delphi 2006 Architect
 
#7

Re: .exe anhängen ?!

  Alt 11. Mai 2008, 15:28
Hi,
nein mit ShellExecute oder CreateProcess gibt es keine möglichkeit. Ansonsten wäre es nur möglich eine EXE-datei im speicher auszuführen wenn du es schaffst sie an die richtige ImageBase zuschreiben und dann den EntryPoint callen aber sowas hab ich noch nie gemacht also kann ich dir da nur sagen wie es in der Theori geht(DLL-datei kann man leichter im speicher ausführen da diese nicht an eine ImageBase gebunden sind).

P.S. wenn ich jetzt scheiße erzählt habe bitte korrigiert mich...

P.P.S warum willst du das überhaupt machen

MfG Carlo
Thorben
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: .exe anhängen ?!

  Alt 11. Mai 2008, 16:07
Ja es git eine Möglichkeit baer das ist mehr ein hack, als eine saubere Lösung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Carlo91

Registriert seit: 3. Jun 2006
Ort: Bremen
107 Beiträge
 
Delphi 2006 Architect
 
#9

Re: .exe anhängen ?!

  Alt 11. Mai 2008, 17:10
Hi,
ich habe grade ein paar tests gemacht:

1. Es geht nur mit EXE-datein die eine "außergewöhnliche" ImageBase haben da 1. dein Programm ja auch irgendwo ist 2. auf einer standard ImageBase($00400000) kein speicher reserviert werden kann und VirtualAlloc reserviert somit die "nächst mögliche" adresse(aber um ein programm auszuführen muss es an der "richtigen" adresse sein da sonst die calls und jmps im programm "falsch" sind) und GetLastError gibt "Es wurde versucht, auf eine unzulässige Adresse zuzugreifen" bei einer standard ImageBase oder wenn dein Programm an dieser adresse ist aus.

2. Und dann ist mir noch was aufgefallen undzwar das mein Test Programm was ich im speicher ausgeführt habe kein Programm Icon hatte also kann das im speicher ausgeführte Programm wohl nicht komplett auf die eigenen Resourcen zugreifen obwohl das auch nicht sein kann da es ein VCL Programm war und somit musste es ja auch die DFM aus den ressourcen auslesen

3. Und wie auch schon punkt 2 eigendlich sagt kann es zu einem unerwarteten verhalten des ausgeführten Programmes kommen

4. Und es ist unsauber wie Luckie schon sagte

MfG Carlo
Thorben
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: .exe anhängen ?!

  Alt 12. Mai 2008, 11:00
Zitat von Carlo91:
Hi,
ich habe grade ein paar tests gemacht:

1. Es geht nur mit EXE-datein die eine "außergewöhnliche" ImageBase haben da
Soweit ich weiß, ist das nicht nötig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz