AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme MAINICON in .exe einbinden, ich mach da was total falsch

MAINICON in .exe einbinden, ich mach da was total falsch

Ein Thema von KodeZwerg · begonnen am 14. Okt 2018 · letzter Beitrag vom 17. Okt 2018
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.263 Beiträge
 
Delphi 2010 Professional
 
#1

MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 14. Okt 2018, 12:45
Betriebssystem: Win 10
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 MAINICON ICON "KodeZwerg.ico" an, kompilier das zu einer .res datei und binde diese mit "{$R KodeZwerg.res}" ein.

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?
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
409 Beiträge
 
Delphi 2007 Professional
 
#2

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 14. Okt 2018, 13:05
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?
Bei mir gibt es immer eine <projekt>_icon.rc-Datei mit folgendem Inhalt:

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
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
Ort: Oberreichenbach
16.427 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 14. Okt 2018, 13:18
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
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.263 Beiträge
 
Delphi 2010 Professional
 
#4

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 14. Okt 2018, 14:07
MAINICON ICON LOADONCALL MOVEABLE DISCARDABLE IMPURE "../buildtools/dz.ico"
Danke twm, ich habe deinen Vorschlag fast so wie du sagtest umgesetzt und es macht was es sollte, icon ist in exe als haupticon plus kontext icon sichtbar.

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
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
409 Beiträge
 
Delphi 2007 Professional
 
#5

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 14. Okt 2018, 16:09
MAINICON ICON LOADONCALL MOVEABLE DISCARDABLE IMPURE "../buildtools/dz.ico"
Ich lasse den Delphi kompiler das beim compilieren erstellen indem ich {$R 'KodeZwerg.res' 'KodeZwerg.rc'} mache.
Das hatte ich auch mal so, allerdings gab es irgendwann mal Probleme damit. Blöderweise kann ich mich nicht mehr erinnern, was genau nicht funktionierte und welche Delphi-Version das war. Ich habe es danach umgestellt wie beschrieben und das funktionierte seitdem immer. Und da ich sowieso immer auch ein Prebuild-Script verwende um die Buildnummer hochzuzählen, ist der Aufwand eher gering.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.708 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 14. Okt 2018, 16:35
Ich lasse den Delphi kompiler das beim compilieren erstellen indem ich {$R 'KodeZwerg.res' 'KodeZwerg.rc'} mache.
Das hatte ich auch mal so, allerdings gab es irgendwann mal Probleme damit.
Leider funktioniert das nur, wenn die Zeile in der DPR steht. Innerhalb einer Unit wird der RC-Anteil ignoriert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.263 Beiträge
 
Delphi 2010 Professional
 
#7

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 14. Okt 2018, 16:53
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!
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...

Geändert von KodeZwerg (14. Okt 2018 um 17:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
Ort: Oberreichenbach
16.427 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 14. Okt 2018, 16:55
Ohne eine dproj-Datei werden rc-Dateien nicht nach res gewandelt.
Das erfolgt durch einen Aufruf des brcc in der dproj-Datei.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.263 Beiträge
 
Delphi 2010 Professional
 
#9

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 17. Okt 2018, 08:54
MAINICON ICON LOADONCALL MOVEABLE DISCARDABLE IMPURE "../buildtools/dz.ico"
Soeben auch erfolgreich mit 64bit kompilate getestet. Danke nochmals.

Wenn ich fragen dürfte um es besser zu verstehen, worin liegt der unterschied?
Also MAINICON ICON LOADONCALL MOVEABLE DISCARDABLE IMPURE "../buildtools/dz.ico" vs MAINICON ICON "../buildtools/dz.ico" .
Gibts da ein paar informationen zu den optionen?
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...

Geändert von KodeZwerg (17. Okt 2018 um 08:59 Uhr)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.252 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: MAINICON in .exe einbinden, ich mach da was total falsch

  Alt 17. Okt 2018, 09:09
Hab mal den Artikel bzgl der Attribute gefunden

https://docs.microsoft.com/en-us/win...rce-attributes

Vielleicht hilfts dir weiter
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf