Entwickler-Ecke

Windows API - Icon der Exe ändern ??


scrooge - So 08.06.03 11:58
Titel: Icon der Exe ändern ??
Hi,

hab da ein Problem, dass mir bisher keiner beantworten konnte und das ich auch in keiner Tipp-Sammlung gefunden hab. Wüsste nämlich gern, wie man den Icon der eigenen Exe ändert.


Tweafis - So 08.06.03 12:02

Projekt->Optionen->Anwendung

%


TomT - So 08.06.03 12:02

Das kannst du unter Projekt-Optionen in dem TabSheet Applikation auswählen.


Tweafis - So 08.06.03 12:14

Und was hab ich gerade gesagt?

//Oh, sorry seh erst gerade das du unmittelbar nach mir gepostet hast ;)


scrooge - So 08.06.03 13:38

Hi,

na das hab ich dann wohl falsch ausgedrückt. Wie ich das in der Entwicklungumgebung ändere, weiß ich auch ,aber wie macht man das während der Laufzeit.


Tweafis - So 08.06.03 13:39

Falls du das Icon der Form ändern willst dann

Form1.Icon := ...


scrooge - So 08.06.03 13:43

Na, nicht nur der Form, sondern der Exe. Normalerweise hat ja jede Datei
ein Icon , und ich will halt in diesem Fall das Icon der Exe vom eigenen Prog. ändern. Hoffe das war jetzt einigermaßen verständlich.


Tweafis - So 08.06.03 13:44

Da musst du ja die Ressourcen der ExeDatei verändern. Wozu willst du das zur Laufzeit ändern?


scrooge - So 08.06.03 13:48

Wo wir grad beim Thema sind (wenn nein, hat sich die Frage ja dann eh erledigt): Kann man überhaupt die Ressourcen zur Laufzeit ändern ??


Tweafis - So 08.06.03 13:52

Darauf wollte ich ja hinaus, das Programm ist ja in Nutzung. Ich denke nein.


scrooge - So 08.06.03 14:16

Ginge das vielleicht von ner anderen Anwendung aus, wenn das Prog. selbst nicht läuft ??


Delete - So 08.06.03 14:18

Kuck dir mal die API UpdateResource an.


scrooge - So 08.06.03 14:57

Hi,

hab mir das mal angeguckt. Hab auch schon (versucht) den Code zu schreiben, der hat aber nicxht funktioniert. Kapier leider nur die Hälfte des Textes mit meinem bisschen Englisch. Daher wärs nett (wenn du dich damit auskennst),wenn du mal den unten stehenden Code nach Fehlern überprüfen könntest.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm2.FormCreate(Sender: TObject);
var Handle :THandle;
Icon :TICON;
p :Pointer;
begin
Icon := TICon.Create;
icon.LoadFromFile('Bitmap3.ico');
p := @icon;
Handle := BeginUpdateResource('Project1.exe', false);
UpdateResource(Handle, RT_ICON, 'MAINICON'0, p, sizeof(TIcon));
EndUpdateResource(Handle, false);
end;



Moderiert von user profile icontommie-lie: Code- durch Delphi-Tags ersetzt


Delete - So 08.06.03 15:22

Ich habe mich damit auch noch nicht auseinandergesetzt. Aber ich würde erst mal vorschlagen, dass du die Pfade komplett angibst.

Und hier findest du Infos zu UpdateResource:
UpdateResource - MSDN [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/updateresource.asp] und hier ein Beispiel: UpdateResource - Beispiel [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/IntroductiontoResources/UsingResources.asp].


Tweafis - So 08.06.03 16:36

Trotzdem glaube ich nicht das das zur Laufzeit an der eigenen Exe geht. Genausowenig wie man zur laufzeit die eigene Exe löschen kann...


scrooge - So 08.06.03 20:03

ich bins nochmal. Hab das ganze mal von ner anderen Exe aus probiert. Jetzt hab ich nut das Problem, dass der erstens nur den Icon ändert, wenn ich dabei alle Resourcen lösche, und zweitens kommt dann nur der Standard-Anwendungs-Icon von Windows, so dass man davon ausgehen kann, dass der überhaupt kein Icon da gespeichert hat.


Delete - So 08.06.03 20:34

Kuck doch erst mal mit einem Ressourcen-Explorer (ResHacker) in die Ressource rein.


scrooge - So 08.06.03 20:47

Und wo krieg ich den her ??


Delete - So 08.06.03 20:57

Schon mal eine Suchmaschine deines Vertrauens bemüht? :roll:


Bela Urlaub - Mo 09.06.03 04:30

Der Softprose Programm Explorer von onlinehome
Ich weiss nicht, ob er ihn noch auf seiner Page zum Download anbietet...
[url]http://www.softprose.de[/url]

Ihr kennt ihn bestimmt aus dem Forum hier... Er proggt auch in Delphi.
Ich find sein Prog recht gut, auch wenns beim speichern von manchen Ressourcen Bugs hat... z.B. beim Speichern von Icons oder Bitmaps...
Es geht aba!
Wenn du n Bitmap oda n Icon rippen willst, dann musst du als Cusor speichern und die Dateiendung noch ranhängen.. also *.cur
dann kannst du speichern... Dann noch mit IrfanView öffnen, das das Format autom. richtet und das wars...!
Öffnen kannste damit *.exe und *.dll


scrooge - Mo 09.06.03 15:11

Hi,

hab mir ResHacker mal runtergeladen. Das dumme is nur: Entweder ist der ganze Icon schrott, so dass mir ResHacker tausend Fehlermeldungen zeigt, oder es ist einfach nix anders.


scrooge - Mo 09.06.03 15:12

Hi,

hab mir ResHacker mal runtergeladen. Das dumme is nur: Entweder ist der ganze Icon schrott, so dass mir ResHacker tausend Fehlermeldungen zeigt, oder es ist einfach nix anders.


DaFox - Di 10.06.03 18:27

Tweafis hat folgendes geschrieben:

Genausowenig wie man zur laufzeit die eigene Exe löschen kann...


Sogar das ging bis Windows XP prima.

Gruß,
Markus


Tweafis - Di 10.06.03 20:02

Zitat:
Sogar das ging bis Windows XP prima.


Eben bis. Aber da sein Programm vermutlich auch unter XP laufen soll...


DaFox - Di 10.06.03 20:14

Deshalb prima. Es geht auch danach noch... :wink:

Gruß,
Markus


scrooge - Mi 18.06.03 13:49

Hi,

hab gerade erfahren, dass das Icon-Format in der Resource ein völlig anderer ist als TIcon. Schätze mal, dass das Ganze am Format liegt. Weiß denn jemand wie man TIcon in dieses besagte Format in der Res umwandelt ??