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
SMO

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

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 22:10
ID 105 ist ja schon eine Icon Gruppe, wenn ich das richtig sehe. Die wurde bei meinem Code auch ersetzt. Aber im Ordner "Icon" das mit der ID 1 eben nicht. Auch nicht mit dem Code von Dir.
Stimmt. Ich habe den Code auf der letzten Seite angepasst, probier's damit nochmal.
Das Problem sind die Language IDs, bei dir eben "Englisch (Großbritannien)". Die musst du beim Aufruf von UpdateResource exakt angeben, sonst schlägt der fehl.
("Englisch (Großbritannien)" = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK))

Mein Code benutzt jetzt die Holzhammermethode und löscht die Icons in sämtlichen Sprachen, in denen sie vorhanden sind. Die neuen Icons werden dann als "sprachneutral" eingefügt.
  Mit Zitat antworten Zitat
Satyr

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

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 22:22
Ich dachte das würde einfach überschrieben.

Aber irgendwie stimmt es noch nicht. Jetzt wird einen neue Icongruppe erzeugt (mainicon) und bei den Einzelicons einige hzinzugefügt (Sprache Neutral) und die existierenden bleiben die alten Icons...
Angehängte Grafiken
Dateityp: jpg Image 4.jpg (172,2 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
SMO

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

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 22:37
Du musst den Code schon richtig anwenden.
Was genau möchtest du machen? Ich dachte, diese Datei mit der Symbolgruppe 105 wäre die Quelle, nicht das Ziel.

Delphi-Quellcode:
procedure Test;
var
  AGroupIcon: TSmoGroupIcon;
begin
  // Hole die Symbolgruppe #105 aus abc.exe
  if not GetGroupIcon('abc.exe', MakeIntResource(105), AGroupIcon) then
    RaiseLastOSError;
  // Speichere die Symbolgruppe in Test.exe unter dem Namen "MAINICON"
  if not SetGroupIcon('D:\Test.exe', 'MAINICON', AGroupIcon) then
    RaiseLastOSError;
end;
  Mit Zitat antworten Zitat
Satyr

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

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 22:44
Nene, die ist das Ziel. Bzw. ich weiß nicht ob sie es ist.

Ich möchte einfach nur bei einer bestimmten EXE das Icon das angezeigt wird ändern. Ich habe in einem Ressourcen Editor dann die Icons in der Gruppe 105 gefunden und 5 einzelne Icons. Und die dann versucht zu ersetzen. Aber das klappt irgendwie nicht so richtig...
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 22:46
Hatte auch mal was gebastelt, vielleicht hilft dir das ja weiter:
http://www.delphipraxis.net/170682-l...resourcen.html

Wenn die .exe schon ein Icon hat, musst du gegebenenfalls die primäre IconGroup vorher manuell löschen. Die APIs dazu wurden ja schon genannt (UpdateResource mit nil und 0 als Größe sollte den Eintrag entfernen).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Satyr

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

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 22:56
Hatte auch mal was gebastelt, vielleicht hilft dir das ja weiter:
http://www.delphipraxis.net/170682-l...resourcen.html
Danke, das sieht... kompliziert aus (für mich) *g*.

Ich werde mich morgen einlesen und hoffentlich rausfinden wie ich das benutzen kann. Wenns klappt, geb ich hier bescheid .
  Mit Zitat antworten Zitat
SMO

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

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 22:59
Nene, die ist das Ziel. Bzw. ich weiß nicht ob sie es ist.

Ich möchte einfach nur bei einer bestimmten EXE das Icon das angezeigt wird ändern. Ich habe in einem Ressourcen Editor dann die Icons in der Gruppe 105 gefunden und 5 einzelne Icons. Und die dann versucht zu ersetzen. Aber das klappt irgendwie nicht so richtig...
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.


Hatte auch mal was gebastelt, vielleicht hilft dir das ja weiter:
http://www.delphipraxis.net/170682-l...resourcen.html

Wenn die .exe schon ein Icon hat, musst du gegebenenfalls die primäre IconGroup vorher manuell löschen. Die APIs dazu wurden ja schon genannt (UpdateResource mit nil und 0 als Größe sollte den Eintrag entfernen).
Danke für den Link, das schaue ich mir mal an. UpdateResource hat Satyr ja schon von Anfang an benutzt, das Problem waren eher die Language IDs. UpdateResource funktionier nämlich nur dann, wenn man die richtige Language ID angibt.
  Mit Zitat antworten Zitat
Satyr

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

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 23: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
 
#9

AW: Icon anderer EXE Datei ändern

  Alt 14. Dez 2015, 23: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 00:03 Uhr)
  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 11:06 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