Autor Beitrag
Georg08
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 155
Erhaltene Danke: 6

Win XP
Delphi 7.0 Personal
BeitragVerfasst: Di 22.09.09 16:20 
Hallo!
Ich habe mir ein Programm geschieben und eine *.exe in die Resource gelegt. Diese möchte ich nun ausführen, also habe ich noch einen TFileStream erstellt, der die Datei speichert. Beim schließen des programmes wird sie wieder gelöscht. Das finde ich persönlich jedoch incht sehr elegant und habe daher die Frage, ob es möglich ist die Datei auszuführen, ohne sie Vorher zu speichern...
Hier ein ausschnitt des Codes:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
var
  RStream: TResourceStream;
  FStream: TFileStream;
begin
  try RStream := TResourceStream.Create(hInstance, 'DATEI', 'RC_DATA');
  try FStream := TFileStream.Create('datei.exe', fmCreate or fmShareExclusive);
  try
    FStream.CopyFrom(RStream,0);
    MP_create := true;
  finally
    FStream.Free;
  end;
  finally
    RStream.Free;
  end;
  except
  end;
  windows.winexec(PChar('datei.exe'),1);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  var
  datei : file;
begin
  if MP_create then
  begin
    assignfile(datei, 'datei.exe');
    erase(datei);
  end;
end;
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.09.09 19:52 
Warum willst du das machen? Das geht zwar aber nur mit schmutzigen Tricks und ist nicht ganz trivial. Desweiteren kann das schon bei neueren Windows Versionen schon nicht mehr funktionieren. Und was Virenscanner dazu sagen, weiß ich auch nicht.