AGB  ·  Datenschutz  ·  Impressum  







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

Icon einer exe austauschen

Ein Thema von jonny · begonnen am 2. Feb 2004 · letzter Beitrag vom 5. Feb 2004
 
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Icon einer exe austauschen

  Alt 3. Feb 2004, 16:04
Also gut, richtig ausprobiert hatte ich das Beispiel so direkt auch nicht, sondern ich hatte nur die Informationen übernommen, die mir selbst noch bezüglich dieser Technik gefehlt haben ...und dann lief mein Prog auch. (Also dachte ich natürlich, dass das bei diesem Code-Beispiel dann eigentlich sowieso der Fall wäre...). *g*

Hier hast du mal meinen Code. Habe das Testprogramm gerade nochmal kurz angeschmissen und gecheckt. Ein Icon-Austausch, auch beliebig oft hintereinander, ist damit eigentlich kein Problem.


Code:
type
...
  TIconDir = packed record // die 3 Anfangswörter eines IconFiles
    idReserved: Word; // Reserved (must be 0)
    idType: Word; // Resource Type (1 for icons)
    idCount: Word; // How many images?
  end;

  TIconDirEntry = packed record // An entry for each image
    bWidth: Byte; // Width, in pixels, of the image
    bHeight: Byte; // Height, in pixels, of the image
    bColorCount: Byte; // Number of colors in image (0 if >=8bpp)
    bReserved: Byte; // Reserved ( must be 0)
    wPlanes: Word; // Color Planes
    wBitCount: Word; // Bits per pixel
    dwBytesInRes: DWord; // How many bytes in this resource?
    dwImageOffset: DWord; // Where in the file is this image?
  end;
.
.
.
procedure TForm1.ExchangeIcon (Ikone : TIcon);

const Filename = 'C:\Programme\Borland\Delphi7\Projects\Probs\IconOverwrite\FileXY.exe';
var URHandle : HWnd;
    MemStream : TMemoryStream;

begin
  URHandle := BeginUpdateResource(PChar(Filename),FALSE);
  if URHandle = 0 then begin
    showMessage('keine UR-Handle erhaltbar!');
    exit;
  end;

  MemStream := TMemoryStream.Create;
  try
    Ikone.SaveToStream(MemStream); // im Stream entsteht da immer die 1-Icon-Filestruktur!

    UpdateResource(URHandle,
                   RT_ICON,
                   MakeIntResource(1), // = OrdnerNummer (siehe im ResourceHacker)
                   1031,
                   Pointer(longint(MemStream.Memory) + SizeOf(TIconDir) + SizeOf(TIconDirEntry)),
                   MemStream.Size - SizeOf(TIconDir) - SizeOf(TIconDirEntry));
  finally
    EndUpdateResource(URHandle, False);
    MemStream.free;
  end;
end;
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
 


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 09:06 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