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
Antwort Antwort
Seite 3 von 4     123 4      
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#21

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 00:10
Ok, dann müsste Post #15 aber schon gestimmt haben.
MAINICON ist das Hauptsymbol. Falls das schon im Ziel existiert, wird es überschrieben. Falls nicht, hinzugefügt. Es macht doch nichts, dass da noch eine andere Symbolgruppe ist. Aber denke an den Icon-Cache, der kann dazu führen, dass du immer noch in Windows das alte Symbol siehst.
Auch im RessourceEditor (Resource Tuner)? MAINICON war noch nicht da. Wird das automatisch als Anzeigesymbol genommen, statt der anderen Icons? Kann ich auch einfach alles was ist rauslöschen (so hab ich zumindest Zacherl verstanden), MAINICON Gruppe reinladen und fertig?
  Mit Zitat antworten Zitat
SMO

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

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 00:54
Auch im RessourceEditor (Resource Tuner)? MAINICON war noch nicht da. Wird das automatisch als Anzeigesymbol genommen, statt der anderen Icons? Kann ich auch einfach alles was ist rauslöschen (so hab ich zumindest Zacherl verstanden), MAINICON Gruppe reinladen und fertig?
Ich hab's nochmal getestet: Das Hauptsymbol ist nicht unbedingt das, welches "MAINICON" heißt, sondern das mit der kleinsten ID. IDs können ja Namen (Strings) und Nummern sein. Namen "gewinnen" über die Nummern.

Soll heißen:
Hast du zwei Symbolgruppen, "MAINICON" und 105, dann gewinnt "MAINICON", weil es keine Nummer ist.
Hast du zwei Symbolgruppen, "MAINICON" und "BLA", dann gewinnt "BLA", weil es kleiner ist, d.h. alphabetisch sortiert zuerst kommt.
Hast du zwei Symbolgruppen, 105 und 13, dann gewinnt 13, weil es kleiner ist.
Hast du vier Symbolgruppen, 105, 13, "MAINICON" und "BLA", dann gewinnt "BLA".

Wenn du das neue Symbol als Hauptsymbol einrichten willst, dann nimm also einfach "A" als Name, der kommt alphabetisch immer als erstes! (Ressourcennamen übrigens bitte immer nur in Großbuchstaben.)

Alles klar?

Geändert von SMO (15. Dez 2015 um 01:03 Uhr)
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 01:04
Verstehe. Dann such ich morgen bei Google wie ich vorhandene Icons alle lösche, eine neue Icongroup importiere und dann müsste das alles sein, wenn ich das richtig verstanden habe.
  Mit Zitat antworten Zitat
SMO

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

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 01:10
Wieso willst du alle vorhandenen Icons löschen? Das halte ich für keine gute Idee. Ein Programm könnte die Icons ja eventuell im Code benutzen. Wenn sie nicht mehr existieren, könnte es dann zu Fehlern kommen.

Wenn du sie wirklich löschen willst, dann kannst du mit EnumResourceNames die IDs aller RT_GROUP_ICON herausfinden und z.B. mit der DeleteGroupIcon-Funktion aus meinem Code löschen. Aber ich rate wie gesagt davon ab. Wenn du einfach nur das Symbol ändern willst, welches der Windows Explorer anzeigt, dann benutze SetGroupIcon mit 'A' als GroupName-Parameter.
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#25

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 01:27
Ich dachte ich komme dann weniger in Konflikte, wenn ich nur meine Icons da habe, quasi.
Sag mal... kann ich Dir die exe mal schicken an der ich rumversuche? Ich wüsste nur gerne ob Du es schaffst das Icon zu ändern. Ich frage nicht nach dem Code. Ich habe das Gefühl das irgendetwas bei der exe anders ist, ich komme aber nicht drauf was. Ist nur ein Gefühl.
  Mit Zitat antworten Zitat
SMO

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

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 01:46
Klar, kannst du mir gerne schicken.
Aber du kannst auch einfach mal für dich selbst eine Kopie deiner Exe erstellen, der Kopie dann einen zufälligen Namen geben, um dem Icon-Cache zu entgehen und das aktuelle Symbol sofort zu sehen.
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#27

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 01:51
Das habe ich schon versucht, leider ohne Erfolg...

Hab Dir den Dropbox Link per PM geschickt.

Geändert von Satyr (15. Dez 2015 um 01:54 Uhr)
  Mit Zitat antworten Zitat
SMO

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

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 02:04
Funktioniert problemlos bei mir mit dem Code aus #9.

So bin ich vorgegangen (deine Exe nennen wir mal z.exe):

Delphi-Quellcode:
procedure ChangeIcon;
var
  IconA: TSmoGroupIcon;
begin
  // Hole die neue Symbolgruppe... hier als Beispiel #2 aus Notepad.exe
  if not GetGroupIcon('C:\Windows\System32\Notepad.exe', MakeIntResource(2), IconA) then RaiseLastOSError;
  // Speichere die Symbolgruppe in z.exe unter dem Namen "A"
  if not SetGroupIcon('D:\z.exe', 'A', IconA) then RaiseLastOSError;
end;
Im Explorer hatte D:\z.exe dann nach wie vor das alte Symbol - wegen des Icon-Caches.
Also habe ich z.exe im Explorer einfach schnell kopiert (Strg+C, Strg+V) und schon wurde bei der Kopie das Notepad-Symbol angezeigt, wie erwartet.
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#29

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 02:09
Merkwürdig... dann scheint es irgendwie an meinem (VMWare) System zu liegen. Viell. ist da der Cache noch kurioser als eh schon.
Ich danke Dir für all die Hilfe und das geklärt ist, das es im Grunde funktionieren müsste.

Kann ich den Code eig. auch mit einer ico Datei benutzen oder nur mit exe Dateien?
  Mit Zitat antworten Zitat
SMO

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

AW: Icon anderer EXE Datei ändern

  Alt 15. Dez 2015, 02:35
Ich benutze übrigens Windows 8.1.

Im jetzigen Zustand kannst du den Code nur mit Exe/Dll benutzen. Aber eine Lade-Routine für Ico-Dateien ist überhaupt kein Problem, weil Ico-Dateien praktisch dasselbe Format haben: ein TGroupIconRsrcHeader, gefolgt von einem oder mehreren TGroupIconRsrcEntry (nicht ganz, kleine Änderung), gefolgt von den Rohdaten der Bitmaps/PNGs. Die Lade-Routine schreibe ich vielleicht morgen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 04:31 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