![]() |
Betriebssystem: Win 10
MAINICON in .exe einbinden, ich mach da was total falsch
hallo leute,
ich steh mal wieder total aufm schlauch, seit ein paar tagen entwickle ich ein mini programm, was nur während der Setup-Procedure Windows-Dialoge zeigt ansonsten hat es keine Forms. (also unit Forms/VCL ist nicht enthalten) das ziel ist ein kontext menu eintrag mit bild für Windows 10. was ich ausprobiert habe war zu aller erst ein {$APPTYPE CONSOLE} das passte mir so gar nicht in die tüte wegen offener console also diese zeile auskommentiert so das eine Windows Anwendung daraus entsteht. mein nächster schritt war, ich schnappe mir ein icon, ändere die größe auf 12x12 pixel, lege eine .rc datei mit inhalt
Delphi-Quellcode:
an, kompilier das zu einer .res datei und binde diese mit "{$R KodeZwerg.res}" ein.
MAINICON ICON "KodeZwerg.ico"
das schien anfangs auch so zu funktionieren, jetzt irgendwie so gar nicht mehr. nun entschied ich mich delphi die arbeit zu überlassen indem ich das Icon als Resource mit Namen "MAINICON" einbinde. delphi hat darauf hin eine weitere .rc Datei angelegt und mit endung ".dres" eingebunden. zu meiner verwunderung enstand immer eine datei mit dem Delphi Icon (D2010) erstelle ich nun einen Kontext eintrag und übergebe als "Icon" den .exe Namen passieren aber ganz andere dinge. mal ist das bild "blanko", mal isses das Delphi ding und mal mein eigenes Icon ohne das ich groß was mache. am merkwürdigsten ist es, wenn man sich die .exe per resource editor anschaut, je nach build, mal ist delphis icon drinnen mal mein eigenes. Von daher frage ich mal fröhlich in die Runde, wie bindet man ein icon korrekt ein wenn man keine Forms benutzt aber als ziel eine windows application erstellt? |
AW: MAINICON in .exe einbinden, ich mach da was total falsch
Zitat:
MAINICON ICON LOADONCALL MOVEABLE DISCARDABLE IMPURE "../buildtools/dz.ico" (alles in einer Zeile) Dabei ist der Pfad relativ zu <project>.dpr Die compiliere ich im Prebuild-Script mit dem Microsoft Resource Compiler zu <projekt>_icon.res (Früher habe ich dazu den Borland Ressource Compiler verwendet, aber irgendwann hatte ich damit Probleme. Weiß aber nicht mehr welche.) Diese Datei wiederum binde ich im Projekt mittels {$ *_icon.res} ein. Das klappt eigentlich immer. twm |
AW: MAINICON in .exe einbinden, ich mach da was total falsch
Kann es sein das der (seit NT fehlerhafte) Windows-Icon-Cache dir einen Strich durch die Rechnung macht.
Du kannst fröhlich das Icon in der Exe tauschen - Windows zeigt immer das alte Icon an. Mit folgenden Script löscht den fehlerhaften Windows-Icon-Cache
Code:
@echo off
taskkill /f /IM explorer.exe CD /d %userprofile%\AppData\Local DEL ShellIconCache /a Start explorer.exe |
AW: MAINICON in .exe einbinden, ich mach da was total falsch
Zitat:
Ich lasse den Delphi kompiler das beim compilieren erstellen indem ich {$R 'KodeZwerg.res' 'KodeZwerg.rc'} mache. @bgeyer danke für diesen durchaus sehr guten tipp nur existiert kein ShellIconCache bei mir an dieser stelle. ich such mal meine platte danach ab, rein für die zukunft :) |
AW: MAINICON in .exe einbinden, ich mach da was total falsch
Zitat:
![]() |
AW: MAINICON in .exe einbinden, ich mach da was total falsch
Zitat:
|
AW: MAINICON in .exe einbinden, ich mach da was total falsch
das beantwortet ungefragt genau das was mir auch in anderen projekten aufgefallen war, wenn in .pas (unit) eine .rc auf diese weise eingebunden wird sagt der das keine .res da ist, so ist dieses rätsel auch geklärt. (ich ging dann immer auf commandprompt und brcc32)
durch zufall besteht dieses projekt nur aus einer .dpr datei, von daher klappte es aber ich folge da mal twm, das finde ich sehr gut mit dem prebuild, guter vorschlag, nehme ich dankend an! ps @twm: ich kannte deine seite noch nicht, bin da jetzt gerade mit dem prebuild, es liest sich super und wird von dir echt gut beschrieben, vielen dank! |
AW: MAINICON in .exe einbinden, ich mach da was total falsch
Ohne eine dproj-Datei werden rc-Dateien nicht nach res gewandelt.
Das erfolgt durch einen Aufruf des brcc in der dproj-Datei. |
AW: MAINICON in .exe einbinden, ich mach da was total falsch
Zitat:
Wenn ich fragen dürfte um es besser zu verstehen, worin liegt der unterschied? Also
Delphi-Quellcode:
vs
MAINICON ICON LOADONCALL MOVEABLE DISCARDABLE IMPURE "../buildtools/dz.ico"
Delphi-Quellcode:
.
MAINICON ICON "../buildtools/dz.ico"
Gibts da ein paar informationen zu den optionen? |
AW: MAINICON in .exe einbinden, ich mach da was total falsch
Hab mal den Artikel bzgl der Attribute gefunden
![]() Vielleicht hilfts dir weiter :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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