Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Icon Changer (https://www.delphipraxis.net/171919-icon-changer.html)

Lyan 1. Dez 2012 20:28

Delphi-Version: 7

Icon Changer
 
Hallo,

würde gerne das Icon einer EXE ändern, wobei das Icon in einem TImage liegt.

Das Handle eines Icons einfach mit:

Delphi-Quellcode:
h := ExtractIcon(0,PChar(OpenDialog.FileName),0);
if h <> 0 then begin
  ImageIcon.Picture.Icon.Handle := h;
end;
Delphi-Quellcode:
hInst:=BeginUpdateResource(pchar(Path), False);
UpdateResource(hInst, RT_ICON, MAKEINTRESOURCE(1), LANG_NEUTRAL, ????, ????);
EndUpdateResource(hInst, False);
Würde das so klappen?

Luckie 1. Dez 2012 23:14

AW: Icon Changer
 
Probier's aus. ;)

Andreas L. 2. Dez 2012 10:08

AW: Icon Changer
 
Ich bin mir nicht sicher aber ich glaube du musst das Icon in einen Stream laden und diesen als die letzten Parameter an UpdateResource übergeben.

Delphi-Quellcode:
var
  ptr: Pointer;
begin
  ...
  Stream.Read(ptr^, Stream-Size);
  ...
  UpdateResource(hInst, RT_ICON, MAKEINTRESOURCE(1), LANG_NEUTRAL, ptr, Stream.Size);
  ....
  freemem(ptr, Stream.Size + 1);
end;

Zacherl 2. Dez 2012 16:08

AW: Icon Changer
 
So einfach funktioniert das bei Icons nicht. Die Icon Header Struktur liegt in einer RT_GROUPICON Resource (leicht modifiziert im Vergleich zur File Icon Header) und die Einzelbilder liegen in eigenständigen RT_ICON Resourcen.

Wenn du eine fertige Unit suchst, kannst du meinen Icon Parser hier verwenden:
http://www.delphipraxis.net/170682-l...resourcen.html

Lyan 2. Dez 2012 18:31

AW: Icon Changer
 
Danke Zacherl, die Unit ist wirklich gut! Nun weiß ich auch wie man den Header der EXE ändert, bei mir war dieser bisher immer ungültig..


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 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