Einzelnen Beitrag anzeigen

Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Wie füge ich Ressourcen einer PE-Anwendung hinzu?

  Alt 27. Jan 2009, 17:18
Ich hab das jetzt mal probert, aber ohne Erfolg.

Delphi-Quellcode:
{1. Open the "*.ico" file with read-only access - CreateFile.
2. Querry the size of the file - GetFileSize.
3. Allocate a buffer for the file - mallloc.
4. Read file into the buffer - ReadFile. }


procedure TForm1.Button1Click(Sender: TObject);
var
  Exe: PChar;
  EHandle: THandle;
// hicon: THandle;
  iconStream: TMemoryStream;
  iconsize: Cardinal;
  buffer: Pointer;
// dummy: cardinal;
begin
(*  hicon := CreateFile('icon.ico', GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  iconsize := GetFileSize(hicon, nil);        // für Dateien
  buffer := AllocMem(iconsize);
  ReadFile(hicon, buffer, iconsize, dummy, nil);*)


  iconStream := TMemoryStream.Create;
  Application.Icon.SaveToStream(iconStream);

  iconsize := iconStream.Size;
  iconStream.Position := 0;
  buffer := AllocMem(iconsize);
  iconstream.Read(buffer, iconsize); // geladen ?

  iconStream.Free;


  Exe := 'Test.exe';

  EHandle := BeginUpdateResource(Exe, false);
  UpdateResource(Ehandle, RT_ICON, 'neuesIcon', LANG_NEUTRAL, Buffer, iconsize);
try
  EndUpdateResource(EHandle, false);
except
  ShowMessage('ERROR');
end;
end;
Am Ende der Prozedur kommt eine Exception des Typs EPrivilege, die aber von dem Try-Except-Block nicht abgefangen wird, da sie wohl später auftritt. Was hab ich falsch gemacht? Die Ressource ist nicht in der Testanwendung drin.

@DeddyH: Mit nem Ressource-Hacker kann ich das auch. Es muss (besser: sollte) aber in Delphi sein. Und da ein Ressource-hacker das kann, geht das über Delphi auch. Die Frage ist bloß, wie!

Ich hab mir mal deinen Link angeguckt. Da gibts nen Link auf nen RessourceEditor mit Quelltext. Ich blick da überhaupt nicht durch. Kann auch daran liegen, dass ich nur D7 hab.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat