C# Fenster-Logo ändern

Muss ja nicht mal google sein. Es gibt reichlich Doku zu C#, sowohl offline als auch online!

Am besten fragen zu den Algorithmen stellen und nicht zu irgendwelche Features die schon im Framework integriert sind!
 
aso es ging um disassembleten code.. und dort ist jetzt die Frage bei so vielen Möglichkeiten wonach ich suchen muss. Das icon ist in einer resource-Datei, die kann ich nicht so leicht leserlich öffnen, jedenfalls nicht mit dem notepad. Ich kann das icon löschen, aber nicht ändern.. und ein icon-bilddatei ist nirgends mit dabei.. ist also direkt irgendwo im code der disassembleten resource-datei aus einer exe.
 
Naja, ich wiederhole nochmal, dass ist keine Vorgehensweise, wenn man etwas programmieren möchte. Es hilft weder beim lernen von C# noch ist dieser Weg geeignet um ein Programm zu erstellen. Diese Vorgehensweise wird eigentlich nur verwendet, wenn:

  1. man nach bugs sucht und diese eventuell beheben will
  2. man wissen will, wie ein Programm funktioniert
  3. und das "ärgste" wenn man eine Software cracken möchte. Man beachte, dass dies meist durch das Urheberrechtsgesetz in Deutschland untersagt wird!

Da ich aber keine böse Absicht unterstellen möchte gebe ich dir noch ILSpy mit an die Hand. Dieses Programm stellt eine Möglichkeit da, aus der .exe ein .csproj zu erstellen, welches mit Visual Studio geöffnet werden kann.

Ich glaube, für das gezeigte Icon erstellt VS keinen Eintrag in der Resource, da es sich um das Standart-Icon handelt. Das würde bedeuten, hier muss erst ein neues Icon hinzugefügt werden.

Beste Grüße und bitte stelle keinen Unfug an :)
 
OK, wenn der TE Programmieren lernen möchte und wissen möchte, was bei net .NET Programmierung so im Untergrund abläuft, dann will ich mal das Buch ".NET Framwork Programmierung" von Jeffrey Richter empfehlen. Ist zwar zu Zeiten von .NET 1.1 erschienen, erklärt aber sehr anschaulich, was im Hintergrund bzgl. IL etc. abläuft. Daran hat sich ja auch bis .NET 4.5 nicht viel geändert.

Ansonsten kann ich meinem Vorredner nur zustimmen: Du machst dir damit keinen Gefallen, .NET Exe/Dlls zu disassemblieren und damit "weiter zu arbeiten". Wenn du mit C# programmierst, kommst du NIE direkt mit IL-Code in Kontakt. Wenn doch, dann müsstest du schon sehr spezielle Anforderungen haben. Als Anfänger ist das nur mit Kanonen auf Spatzen geschossen.
 
aah danke euch :-) Also mit Ilspy kann ich das icon sehen, aber nicht bearbeiten. Wenn ich den code dann als csproj speicher & mit vs bearbeite, sehe ich das icon aber wieder nirgends. Komisch ist auch, das ich, wenn ich die exe dann direkt wieder mit dem play-button starten möchte(vorher shift+F6), zig Fehler erhalte, obowhl ich
nichts verändert habe.

exec84 schrieb:
Wenn doch, dann müsstest du schon sehr spezielle Anforderungen haben. Als Anfänger ist das nur mit Kanonen auf Spatzen geschossen.
was ist mit Kanonen auf Spatzen schiessen? Wenn ich mit C# etwas programmiere & dabei IL-Code schreibe?
 
Zuletzt bearbeitet:
Wie schon geschrieben wurde, ist das das Standard-Icon. Das wird immer automatisch verwendet, wenn kein eigenes Icon angegeben wurde.
 
Wenn du die *.csproj mit Notepad++ öffnest sollte diese als XML-Datei vorliegen.

Du kannst unter dem <Project>-Tag einfach folgendes hinzufügen :

HTML:
<PropertyGroup>
   <ApplicationIcon>path_to_icon.ico</ApplicationIcon>
</PropertyGroup>
Wichtig ist, dass es sich um eine *.ico Datei handelt.

Einfacher geht es, wenn du dies in VS unter den Projekt-Einstellungen vornimmst. Unter dem Reiter "Anwendung" kannst du das Symbol auswählen :).

Damit die Änderungen übernommen werden, musst du natürlich das Projekt neu erstellen. Um kompilieren zu können müssen die Fehler also wohl oder übel beseitigt werden.

Das du diese Fehlermeldungen bekommst, liegt wahrscheinlich daran, das ein Decompiler nur in den seltensten Fällen alles richtig zurück schreibt.

Also, selbst ist die Frau :)

Gruß SomeDifferent
 
ich spiele gerade mit mehreren exen herum die haben ja meist so ein icon - es wird mir auch in IlSpy angezeigt, aber in der gespeicherten *.csproj per VS geöffnet finde ich es dann nicht mehr.
 
o0Julia0o schrieb:
was ist mit Kanonen auf Spatzen schiessen? Wenn ich mit C# etwas programmiere & dabei IL-Code schreibe?

Ja, warum solltest du dich mit IL-Code rumplagen, wenn du in C# programmieren willst?
Ich verstehe deinen Ansatz nicht so ganz. Nimm's mir bitte nicht übel, aber das klingt für mich eher so, als willst du hier Reverse Engineering betreiben und danach selbst Änderungen in den Code einbringen.

Ansonsten macht der Umweg über IL-Code keinen Sinn. Das ist nicht so wie früher mit C++ und Inline-Assembler-Code für das letzte Bisschen Performance. Ich würde eher behaupten, dass die .NET-Compiler ihre Sache so gut machen, dass dagegen selbst geschriebener IL-Code immer langsamer ist (von der Fehleranfälligkeit mal ganz zu schweigen).
 
Das Icon ist im .Net-Framework gespeichert (System.Windows.Forms afaik). Wenn ich mich recht erinnere, wird es nur referenziert. D. h. die .exe-Datei kennt in diesem Fall nur die Referenz, beinhaltet das Icon aber nicht.
Programme, die Programmressourcen anzeigen, folgen den Referenzen normalerweise. Der Grund liegt darin, dass Dateien nicht unbedingt eigene Icons haben müssen und sie stattdessen vom Betriebssystem zugeteilt bekommen. Das gilt für Programme genauso wie für jede andere Dateiart.
 
wenn es nur referenziert werden würde, wäre es aber nicht ein nicht-standard-icon. IlSpy zeigt mir eines an - aber VS nicht.
 
damit meinte ich dieses hier:
also dass es das nicht ist.

SomeDifferent schrieb:
HTML:
<PropertyGroup>
   <ApplicationIcon>path_to_icon.ico</ApplicationIcon>
</PropertyGroup>
wenn ich das in die *.il-Datei schreibe erhalte ich beim kompilieren:
Code:
error: syntax error at toeken '<' in: <PropertyGroup>
 
Zuletzt bearbeitet:
o0Julia0o schrieb:
damit meinte ich dieses hier:
also dass es das nicht ist.
Wie gesagt, das Icon ist Teil des .Net-Frameworks. Es liegt da in irgendeiner Assembly drin und die .exe verweist nur auf dieses.

Warum machst du es dir nicht einfach und erzeugst eine Verknüpfung zur .exe? Der kannst du jedes beliebige Bildchen zuweisen, ohne die .exe manipulieren zu müssen.

PS: Direkt am Code rumzupfuschen (und davon zeugt deine Fehlermeldung), bringt genau 0. Das Icon ist Teil der Ressourcen und die haben mit dem IL-Code erst mal gar nix am Hut.
 
Zuletzt bearbeitet:
Zurück
Oben