AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Icon anderer EXE Datei ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Icon anderer EXE Datei ändern

Ein Thema von Satyr · begonnen am 14. Dez 2015 · letzter Beitrag vom 15. Dez 2015
 
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#6

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 20:30
Naja für den Anwendungsfall weiß ich schon vorher das es keine DLL Dateien sein werden.
Aber wenn alles funktioniert ändere ich den Code ab, wie Du vorgeschlagen hast. Schon damit er sauberer ist.
Gut. Sicher ist sicher. Irgendwann mal möchtest du vielleicht eine DLL benutzen, dann kannst du den Code auch wiederverwenden.

Ich habe noch mal kurz recherchiert und es wundert mich nicht, dass dein Code nicht funktioniert. Er zeugt davon, dass dir der Unterschied zwischen RT_ICON und RT_GROUP_ICON nicht klar ist.

Unter RT_ICON werden die Rohdaten der Symbole abgespeichert, d.h. die Bitmaps (auch PNGs sind erlaubt seit Vista). Jedes Symbol erhält dabei eine numerische ID (ein 16-Bit-Word).
Unter RT_GROUP_ICON werden dann ein oder mehrere dieser Symbole zu einer Gesamtheit gruppiert (z.B. um dieselbe Grafik in verschiedenen Auflösungen parat zu haben).

'MAINICON' ist dabei die String-ID des Hauptsymbols wie es vom Explorer angezeigt wird. In deinem Code wendest du aber 'MAINICON' auf RT_ICON an, das ist falsch.

Also, RT_ICON = Bitmap / PNG, RT_GROUP_ICON = eine Datenstruktur des Typs "TGroupIconRsrcHeader", gefolgt von einem array of TGroupIconRsrcEntry:

Delphi-Quellcode:
type
  TGroupIconRsrcHeader = packed record
    wReserved: Word; // 0
    wType: Word; // 1 for icons
    wCount: Word; // number of icons in this group, each has a following TGroupIconRsrcEntry
    // Entries: array [0..idType - 1] of TGroupIconRsrcEntry;
  end;

  TGroupIconRsrcEntry = packed record
    bWidth, bHeight: Byte; // 0 means 256, which is the maximum
    bColorCount: Byte; // number of colors in image (0 if wBitCount > 8)
    bReserved: Byte; // 0
    wPlanes: Word; // 1
    wBitCount: Word; // number of bits per pixel
    dwSize: DWORD; // size of the icon data, in bytes
    wID: Word; // resource ID of the icon (for RT_ICON entry)
  end;
Das ganze ist nicht so einfach, wie du es dir vorstellst.
  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 01:07 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 by Thomas Breitkreuz