Announcement

Collapse
No announcement yet.

Funktion einer vb.net dll über Kommandozeile starten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Funktion einer vb.net dll über Kommandozeile starten

    Hallo,

    ich habe eine Programmbibliothek welche Teil eines größeren Projekts ist. Ich würde nun gerne eine bestimmte Funktion dieser dll über die Kommandozeile (bzw. per batch-Aufruf) starten.

    Habe bisher herausgefunden, dass man normalerweise Funktionen von Dlls mithilfe der RUNDLL32.dll von Windows aufrufen kann. Der Aufruf funktioniert allerdings bei mir noch nicht.

    Wie muss die Mehtode deklariert sein, damit man sie so starten kann?

    Muss die Methode in einer Klasse oder einem Modul liegen?
    Muss die klasse Statisch sein?
    Muss die Methode statisch (shared) sein?
    Brauche ich eine Main() Methode?
    Muss <comVisible(true)> gesetzt sein?

    Wie sieht der Aufruf aus?

    Gut Möglich, dass ich hier einiges durcheinander werfe, verzeiht es mir. Ist es überhaupt möglich einzelne Funktionen/Methoden einer .Net-dll direkt aufzurufen?

    Hab viel rumprobiert aber nichts hat funktioniert.
    Von der Erstellung einer Exe, welche ich über die Kommandozeile starten kann möchte ich absehen, da ich lieber die bereits vorhandene dll (welche ohnehin benötigt wird) verwenden möchte.

    Grüße
    Chris

    Edit:
    Eine paar Infos zur generellen Verwendung der RUNDLL32 habe ich unter http://support.microsoft.com/kb/164787/de gefunden.

    Allerdings ist hier nicht der Aufbau der dlls beschrieben. Insbesondere nicht für den Fall dass die dlls in vb.net erstellt wurden.

  • #2
    http://de.wikipedia.org/wiki/Dynamic...h_ein_Programm
    Christian

    Comment


    • #3
      Wie muss die Mehtode deklariert sein, damit man sie so starten kann?
      Sie muß unmanaged (native) implementiert sein. Dein VB.Net Assembly braucht ein .Net Framework das kann die die RUNDLL32.dll nicht liefern.

      Ist es überhaupt möglich einzelne Funktionen/Methoden einer .Net-dll direkt aufzurufen?
      Schreib dir ein Programm in VB.Net das die Assembly lädt den Typen mit deiner Funktion instanziert und aufruft. Sollten nur eine handvoll Zeilen Code sein.
      Kannst du auch so schreiben das es beliebige Funktion aus beliebigen Assemblies laden kann kostet dich auch nur ein wenig Kommandozeilen-Parameter Parsing.

      Comment


      • #4
        Originally posted by Ralf Jansen View Post
        Schreib dir ein Programm in VB.Net das die Assembly lädt den Typen mit deiner Funktion instanziert und aufruft.
        Danke für deine Antwort!

        Wie rufe ich dann das Programm über die Kommandozeile auf?
        Wie muss dieses Programm vorliegen? Als ausführbare exe? (Das wollte ich ja gerne vermeiden..)

        Comment


        • #5
          Auch die rundll ist ein exe. Die ist halt für nativen Code. Wo ist das Problem einfach eine für managed Code zu schreiben?


          Edit: Alternative wenn dir ein Batch lieber als ein eigenes Programm ist (für mich macht das keinen Unterschied) dann benutz die Powershell da kannst du einfach Assemblies laden und deren Typen instanziieren und aufrufen.
          Zuletzt editiert von Ralf Jansen; 19.12.2012, 13:35.

          Comment

          Working...
          X