Icon aus Ressourcen verwenden

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Icon aus Ressourcen verwenden

    Hallo zusammen,

    Ich wollte mich erstmal vorstellen. Ich bin neu hier im Forum, lese aber schon seit einigen Monaten mit, ist echt klasse was man hier so alles findet. Jetzt muss ich mich aber auch mal anmelden um an der Diskussion teilzunehmen.

    Ich bin Hobby Entwickler, und habe mir eigentlich alles durch Bucher, Tutorials und Googeln selbst beigebracht. Ich arbeite zwar bei einer Softwarefirma, bin aber mehr für die Anwendung und Technischen Support zuständig. Angefangen habe ich erst mit C++ bin dann aber recht schnell über Excel VBA zu Visual Basic gekommen, was für Anfänger meiner Meinung nach einen einfacheren Einstieg ermöglicht, da man den Quellcode besser lesen kann. In Detailfragen hakt es aber noch ein bisschen, was auch der Grund ist warum ich diesen alten Tread nochmal ausgegraben habe.

    Geanu wie der Ersteller dieses Treads möchte ich in meiner Anwendung mehrere Icons einbinden, die zum registrieren von Dateitypen verwendet werden können. Aktuell habe ich diese als *.ico in ein Unterordner gelegt. Da mein Projekt aber aus einer einzigen exe Datei besteht möchte ich diese gern im Programm eingebunden haben, damit alles zusammen bleibt. Als Ressurce einbinden und dann auf Public stellen geht ja leider nicht, wie YaPh1 ja schon beschrieben hat. Ich muss von meiner Anwendung nicht auf die Icons zugreifen, von daher wäre die Möglichkeit dies über eine Win32 Ressurce einzubinden eine gute Möglichkeit !! Aber wie mache ich das ?? Du sagtest mit einem Externen Tool ?? Wie mache ich das genau ?? Eine Ressurcen DLL erstellen, und diese dann einbinden ?? geht das nicht direkt mit dem Visual Studio ?

    Meine Entwicklungsumgebung ist Visual Studio 2012 Express

    Ich möchte die Icons also nur für den externen Zuriff einbinden, um diese dann in der Registery den registrierten Dateitypen zuweisen zu können.

    Kann mir da jemand helfen ??
    Danke im Vorraus

    Gruß
    Dolzman


    Edit by Manschula: Herzlich willkommen im Forum! Bitte keine "alten" Themen für eigene Fragen missbrauchen --> Beitrag als neues Thema angelegt
    Dieses Thema bezieht sich auf [VB 2010] Icon aus Ressourcen veröffentlichen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manschula“ ()

    @Dolzman:: Dann musst Du das Icon einfach als Binärfile auf Festplatte extrahieren:
    Wenn das Icon als solches in die Ressourcen eingefügt wurde:

    VB.NET-Quellcode

    1. IO.WriteAllBytes("c:\Temp\bla.ico", My.Ressources.Icon1)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Klasse, das hilft mir auf jeden fall schon mal weiter was den Zusammenhang Software mit Icons angeht, ich prüfe ob diese vorhanden sind, wenn nicht, einfach zur Laufzeit aus den Ressourcen extrahieren, cool. Das kann ich ja dann auch für alle anderen Dateien verwenden. Hatte mit den Ressourcen bis jetzt noch nicht gearbeitet, ist ja ne Feine Sache !!

    Um aber die Frage abschließend zu beantworten, wäre es dennoch schön zu wissen wie man diese in der exe extern bereitstellen kann.

    Danke erst mal für die schnelle Hilfe !!

    Gruß
    Dolzman
    definiere

    Dolzman schrieb:

    wie man diese in der exe extern bereitstellen kann.
    Obiger Code ist alles, Du brauchst nichts weiter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich meinte damit wenn ich bei einer Verknüpfung auf die Icon Auswahl gehe, die *.exe meines Tools angebe, dass mir dann alle Icons in der EXE angezeigt werden. Diese also nicht extern als *.ico Datei irgendwo liegen, sondern in der EXE eingebettet sind.

    Wenn ich meinen Vorredner aus dem Original Thread zitieren darf:

    Du hast also die Wahl:
    Icons als Win32-Ressourcen einbinden (mit externem Tool), aber dann kann dein Programm nicht darauf zugreifen.
    Oder als .NET-Ressourcen einbinden, dann kann man die Icons aber nicht in Windows auswählen.
    Oder Icons im Ordner (oder Unterordner) der EXE mitliefern, dann kann man mittels Windows-Dialog darauf zugreifen und dein programm kan sie auch laden. Allerdings sind die dann "ungeschützt".



    Wie gesagt, dein Vorschlag, diese zur Laufzeit aus den Ressourcen zu extrahieren ist auch eine gute Möglichkeit die hier in Frage kommt, aber das Einbetten wäre dass was ich mit diesem Thread erreichen wollte !!

    Beispiel:

    Ich denke, das hier ist das was du suchst:

    Add multiple icons to a .NET application

    Ist allerdings auf Englisch.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Zunächst kannst Du beliebig viele Icons als Ressource in Deine Exe einbetten.
    Wenn das nicht reicht, melde Dich wieder.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Dolzman: Das geht, ist aber etwas frickelig.
    Ich empfehle das Programm "Icon Sushi". Damit kann man mehrere Icons/PNGs zu einer Icon-Library zusammenfassen. Ziehe einfach alle Dateien in die Liste, wähle alle aus, die Du in einer Datei haben willst und gehe auf File -> Save as Icon Library.
    Diese Datei musst Du dann im Visual Studio dem Projekt zuweisen. Dazu gehst Du in die Projekteinstellungen, dann auf die Registerkarte Anwendung. Dort ist eine ComboBox mit "Icon:" beschriftet. Da wählst Du "<Durchsuchen...>" aus uns navigierst zu der Icon-Library, die Du erstellt hast. Speichern und Projekt neu erstellen.

    Das frickelige dabei ist, die Auflösungen hinzubekommen. Da musst Du probieren. Ich kann Dir auch nicht sagen, wie das Icon ausgewählt wird, das für die Anwendung (also auch für die Verknüpfung) angezeigt wird.

    Das Icon kann übrigens nicht in den verwalteten Ressourcen liegen. Es kann auch dort liegen, aber das ist dann ein völlig unabhängiges.
    Denn das Icon, das Windows für die Exe anzeigt, muss als "unverwaltete" Ressource in der Datei liegen.

    PS: Wenn das Icon nicht sofort angezeigt wird, kopier die Datei mal in einen anderen Ordner. Windows cacht nämlich die Icons und manchmal dauert's ein Bisschen, bis sie neu geladen werden.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Arby schrieb:

    Ich denke, das hier ist das was du suchst:

    Add multiple icons to a .NET application

    Ist allerdings auf Englisch.


    Klasse, das ist das was ich gesucht habe !!
    Ist ein externes Tool, dass nach dem Kompilieren ausgeführt wird, und die Icons an meine EXE anhängt !!

    @Niko

    Das Icon Sushi habe ich auch versucht, nur die Icon-Libary *.icl kann ich nicht als Icon auswählen, wird mit einem Fehler abgebrochen !!



    Danke erst mal an alle für die schnelle und Kompetente Hilfe !!!

    Gruß
    Dolzman
    @Dolzman: Ich hab den Button verwechselt. Nicht "Save as Icon Library", sondern "Save as Multiple Icon". Dann wird eine .ico-Datei erstellt.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils