ressourcen aus dll laden

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von s0n4.

    ressourcen aus dll laden

    Hallo,
    Ich hab da ein kleines Problem mit meinem vb projekt,
    Ich will in einer Application per buttonklick ein bild aus einer dll als hintergrund eines Panels setzten.

    Die Bilder sind jetzt schon in den ressourcen der dll und in der Application ist der Verweis zur dll gesetzt, und die dll ist im Projekt der Application eingeschlossen.
    könnte mir da jemand helfen?

    MfG
    s0n4
    das sind nicht nur begriffe, das ist der wichtigste Teil deines Codes, welchen du nur noch in VB übersetzen musst und statt der akt. Assembly diese, auf welche du den Verweis hinzugefügt hast verwenden...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    wenn ich das jetzt richtig verstanden habe, kann ich in eine Prozedur schreiben:

    VB.NET-Quellcode

    1. Skin.GetAssembly(typeof(NoInterface))


    wenn die dll datei im selben ordner wie die exe liegt, skin heißt und die klasse NoInterface besitzt.
    Das funktioniert allerdings nicht ;(, insofern wäre mir ein Beispiel sehr lieb :S

    PS: Fehlermeldungen
    GetAssembly ist kein member von skin
    "Is" erwartet
    NoInterface ist ein Typ und kann nicht als Ausdruck verwendet ewrden
    wie es aussieht hast du diese Assembly in den Verweisen hinzugefügt, so sollte es auch sein ;)
    wenn du den Code in dem Online Konverter developerfusion.com/tools/convert/csharp-to-vb/ konvertieren lässt, dann bekommst du folgendes:

    VB.NET-Quellcode

    1. Dim asm As Assembly = Assembly.GetAssembly(GetType(NoInterface)) 'hier hab ich noch geändert
    2. Dim rm As New ResourceManager("resString", asm)

    "resString" ist der Name der Resourcen bei den Resourcen der My Namespace ist das Standardmäßig "[PROJEKTNAME].Resources"...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    ja cool das klingt für mich schon viel eher nach vb :D hatte vorher nicht gesehen das es sich beim code um C# handelt. jetzt ist allerdings ein neues problem aufgetaucht:
    sowohl Assembly als auch ressourceManager sind angeblich nicht definiert...
    muss ich die extra definieren als obejct oder beziehen sich diese Ausdrücke möglicher weise auf eine andere vb version?
    VB 2005/2008/2010 sind nur die IDE's und die Assembly-Klasse ist in jedem Framework zumindest ab 2.0 gleichermaßen enthalten...
    mit ein bisschen Googlen wärste darauf gekommen, dass sie in der System.Reflection Namespace sind, also entweder mit Imports System.Reflection importieren oder vor jedes Assembly ein System.Reflection. anhängen...der ResourceManager gehört zu der Namespace Resources also Resources.ResourceManager verwenden...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    So die Fehler sind weg, aber jetzt muss ich noch eine doofe frage stellen :S
    Bei resString gebe ich ja den pfad zur ressource als String an also in meinem Fall:

    VB.NET-Quellcode

    1. Dim rm As New Resources.ResourceManager("dllName.Resources.Bildname", asm)

    wenn ich dann aber ein Panel mit diesem Bild versehen will würde ich ja diesen Code nutzen:

    VB.NET-Quellcode

    1. panel1.BackgroundImage = rm

    und dann gibt es natürlich die Fehlermeldung
    Der Wert vom Typ " System.Resources.Resource Manager" kann nicht in "System.Drawing.Image" konvertiert werden.
    was mir auch durchaus einleuchtet, aber leider hab ich keinen Schimmer wie ich es richtig mache.... ;(

    VB.NET-Quellcode

    1. Dim rm As New Resources.ResourceManager("dllName.Resources", asm)

    dann guckst dir am besten mal die Funktionen von "rm" an, da gibt es GetString, GetStream und GetObject, dabei ist GetStream oder GetObject für dich verwendbar...GetStream("Bildname") und mit Image.FromStream dann dieses auslesen, oder CType(GetObject("Bildname"),Image) geht glaube ich sogar direkt...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    dann wird es eine COM Komponente sein(wegen ActiveX) somit kannste den Code gleich verwerfen...ich glaube dies geht nur(wenn überhaupt) mit WinAPI
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    jetzt bin ich verwirrt...xD

    also du willst eine Resource aus einer dll holen? Die dll hast du nicht selbst geschrieben? Und du weißt trotzdem, dass du dieses Bild, was in der dll ist mit My.Resources aufrufen kannst? Oder verstehe ich dich wieder vollkommen falsch?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

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

    @Alex2000: nur blöd, dass es darum geht die Resource aus einer eingebundenen Assembly zu laden...

    @TE: postest du dann bitte mal deinen bisherigen Code...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    na und, ist auch kein problem, du kannst nicht auf die ressourecen von andere porgramm zugreifen. Ressourcen sind keine globale objekte, die können nur in eigene EXE oder DLL benutzt werden.
    In seinem fall wäre möglichkeit:
    In Classe eine prozedur schreiben, die aus ressourcen Bilder raus holt und bein initialisierung der Anwendung die Prozedur aufrufen und die bilder anzeigen wo er will.