AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Icon einer Anwendung ändern (UpdateResource)
Thema durchsuchen
Ansicht
Themen-Optionen

Icon einer Anwendung ändern (UpdateResource)

Ein Thema von Neutral General · begonnen am 15. Okt 2007 · letzter Beitrag vom 16. Okt 2007
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Icon einer Anwendung ändern (UpdateResource)

  Alt 15. Okt 2007, 17:03
Hi,

Wenn ich eine .rc Datei erstelle mit folgendem Inhalt

Zitat:
Icon ICON Icon.ico
und diese dann compiliere und in mein Projekt einbaue dann hat danach meine Exe dieses Icon (zumindest nonVCL).
Mit dem Resourcen-Hacker hab ist das Icon zu finden unter:

Zitat:
Icon Group -> ICON -> 1031
Wenn ich auf diesen Eintrag klicke wird mir auch das Icon angezeigt mit folgenden Zusatzinformationen:

Zitat:
32 x 32 (16 colors) - Ordinal name: 1
16 x 16 (16 colors) - Ordinal name: 2
Wenn ich nun das Gleiche mit UpdateResource machen will, nämlich so:

Delphi-Quellcode:
var h: THandle;
    sFile: TFileStream;
    Data: Pointer;
begin
  h := BeginUpdateResource(PChar(Filename),false);
  sFile := TFileStream.Create(IconPfad,fmOpenRead);
  try
    size := sFile.Size;
    GetMem(Data,size);
    sFile.Read(Data^,size);
    UpdateResource(h,RT_GROUP_ICON,'ICON',MakeLangID(LANG_GERMAN,SUBLANG_GERMAN),Data,size);
    FreeMem(Data);
  finally
    sFile.Free;
  end;
  EndUpdateResource(h,false);
end;
Dann funktionierts nicht. Im Explorer wird das Icon nicht angezeigt und mim ResourceHacker habe ich unter dem Selben Eintrag wie eben folgendes stehn:

Zitat:
32 x 32 (1 colors) - Ordinal name: 38
0 x 0 (1 colors) - Ordinal name: 0
Und das Icon wird nicht angezeigt.
Achja: Die Dateinamen und Pfäde stimmen...

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Icon einer Anwendung ändern (UpdateResource)

  Alt 15. Okt 2007, 17:09
Zitat von MSDN:
Each call to UpdateResource contributes to an internal list of additions, deletions, and replacements but does not actually write the data to the executable file. The application must use the EndUpdateResource function to write the accumulated changes to the executable file.
Also auf jeden Fall EndUpdateResource aufrufen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Icon einer Anwendung ändern (UpdateResource)

  Alt 15. Okt 2007, 17:10
Joo.. hab ich vergessen mit reinzukopieren. Hab ich aber in meinem Quellcode stehn.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Icon einer Anwendung ändern (UpdateResource)

  Alt 16. Okt 2007, 13:55
Ich würde jetzt gerne mal pushen.. Also ich habe mir auch mal das hier runtergeladen und versucht:

http://assarbad.net/stuff/!import/mo...n_resource.rar

Ok damit kann man Icons hinzufügen aber halt in der Gruppe "ICONS" (RT_ICON) Soweit ich aber weiß muss das Symbol für die Exe Datei unter "ICON GROUPS" (RT_GROUP_ICON). Wenn ich es jetzt noch schaffen würde dahin ein funktionierendes Icon zu laden dann wär alles gut.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Icon einer Anwendung ändern (UpdateResource)

  Alt 16. Okt 2007, 15:07
Zitat von Neutral General:
Ok damit kann man Icons hinzufügen aber halt in der Gruppe "ICONS" (RT_ICON) Soweit ich aber weiß muss das Symbol für die Exe Datei unter "ICON GROUPS" (RT_GROUP_ICON). Wenn ich es jetzt noch schaffen würde dahin ein funktionierendes Icon zu laden dann wär alles gut.
Leider ist es eine Kombination aus RT_ICON und RT_GROUP_ICON: in RT_GROUP_ICON wird das Verzeichnis der Einzelbilder abgelegt, dass dann mit seinen Einträgen jeweils auf eine RT_ICON-Ressource verweist. Ich habe hier das Dateiformat beschrieben. Im Unterschied dazu ist ein Eintrag in einem Resource-Header etwas kleiner:
Delphi-Quellcode:
type
  TIconResDirEntry = packed record
    bWidth: Byte;
    bHeight: Byte;
    bColorCount: Byte;
    bReserved: Byte;
    wPlanes: Word;
    wBitCount: Word;
    dwBytesInRes: Longint;
    nId: Word;
  end;
Ein Eintrag in RT_GROUP_ICON besteht aus einem TIconDirHdr gefolgt von einem Array aus TIconResDirEntry mit den Ordinalnummer der RT_ICON-Ressourcen in .nId. Diese bestehen dann nur aus den wirklichen Bildinformationen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Icon einer Anwendung ändern (UpdateResource)

  Alt 16. Okt 2007, 15:40
Das heißt man muss da wieder rumschnippeln an der Icon-Datei.. Das ist doch ätzend.. Ich schreibe seit Tagen Tausende von Daten mit Hilfe von UpdateResource in eine Exe und das ohne Probleme und diese besch.. Icons brauchen natürliche ne Sonderbehandlung für die ich mich mim halben Icon Dateiformat auseinandersetzen muss...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Icon einer Anwendung ändern (UpdateResource)

  Alt 16. Okt 2007, 16:21
Zitat von Neutral General:
Icons brauchen natürliche ne Sonderbehandlung für die ich mich mim halben Icon Dateiformat auseinandersetzen muss...
Tja, ist leider so - und nicht nur das: du musst für neue Icons natürlich auch Nummern wählen, die in RT_ICON noch nicht vergeben sind!

Und wie bereits geschrieben: die Ressourcen in RT_ICON beginnen direkt mit dem TBitmapInfoHeader der Farbbitmap eines jeden Einzelbildes. An denen musst du auch nichts mehr ändern, du kannst sie direkt über .dwImageOffset/.dwBytesInRes aus der Datei laden.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:01 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