Announcement

Collapse
No announcement yet.

Einstieg in VB.NET: ActiveX-DLL erstellen

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

  • Einstieg in VB.NET: ActiveX-DLL erstellen

    Hallo zusammen,

    ich bin totaler VB.NET-Neuling, habt also bitte Nachsicht mit mir und meinem gar heftigen Problemchen :-)

    Ich habe bisher mit Classic ASP und VB 6.0 programmiert. In dem Kontext habe ich einige ActiveX-Controls für meine Webanwendungen programmiert. Nix besonderes: Kleine *.DLLs mit VB-Funktionen, die ich dann aus dem ASP-Code (server-seitig) ansprechen konnte. Damit standen mir Funktionen zur Verfügung, die Classic ASP nicht drauf hat.

    Nun habe ich meine erste Schulung für VB.NET-Einsteiger besucht. Leider blieb dort keine Zeit, das Thema "Klassenbibliotheken" anzusprechen. Deshalb versuche ich es jetzt allein - bisher aber mit seeeehhhhrrr mäßigem Erfolg. Auf gut Deutsch - es klappt überhaupt nix!

    Mein Ziel ist es, mit VB.NET *.DLLs zu erstellen, dieses Mal nicht für den Server-Code, sondern für die Client-Seite. Hintergrund ist der: Ich möchte ein paar Webanwendungen client-seitig um Funktionen ergänzen, die JavaScript nicht drauf hat.

    Sicherheitstechnisch ist das kein Problem, da es sich um reine Intranet-Seiten handelt und dementsprechend im Browser (IE ist in der Firma Standard) die passende Sicherheitsstufe eingestellt werden kann.

    Nun wollte ich loslegen, mit 'nem ganz harmlos-billigen *.DLLchen, die eine Funktion enthält, die zwei Zahlen addiert und das Ergebnis zurückliefert.

    Das hier ist der Code (bitte verhaut mich nicht):

    -------------------------------------------------------------------------------

    Public Class schroeders_klasse

    Public Function schroeders_funktion(ByVal var_zahl_01 As Integer, _
    ByVal var_zahl_02 As Integer)

    schroeders_funktion = var_zahl_01 + var_zahl_02

    End Function

    End Class

    -------------------------------------------------------------------------------

    Okay, ich habe also versucht, die *.DLL zu registrieren, damit ich mal testweise "von außen" auf die Funktion zugreifen kann. Geht nicht - heul! Beim Registrier-Versuch mit dem Kommando

    regsvr32.exe schroeders_lib.dll

    kommt die Fehlermeldung:

    schroeders_lib.dll wurde geladen, aber
    der DllRegisterServer-Eingangspunkt
    wurde nicht gefunden.
    Diese Datei kann nicht registriert werden.

    Ich habe dann mal versucht, aus der Webanwendung client-seitig mit VBScript die Funktion "schroeders_funktion" aufzurufen, und zwar mit folgendem Script-Code:

    -------------------------------------------------------------------------------

    <script language="VBScript">

    Set var_activexobject = CreateObject("schroeders_lib.schroeders_klasse")

    var_ergebnis = var_activexobject.schroeders_funktion(1, 2)

    msgbox var_ergebnis

    Set var_activexobject = nothing

    </script>

    -------------------------------------------------------------------------------

    Beim Ausführen des Codes kommt die Fehlermeldung:

    ActiveX-Komponenten kann kein Objekt
    erstellen: 'schroeders_lib.schroeders_klasse'

    Erste Frage: Ist der VB.NET-Code okay, oder mache ich da was total falsch.
    (Ich hab's so gemacht wie bei meinen alten VB6.0-DLLs).

    Und wieso kann die Datei nicht registriert werden?
    (Das wäre dann schon die zweite Frage.)

    Ist denn wenigstens der Aufruf im VBScript so okay?
    (Müsste eigentlich ... Wenn nicht: Dritte Frage.)

    Bin jetzt ziemlich deprimiert. Nix funktioniert und ich hab' keinen blassen Dunst.
    Habt Ihr vielleicht einen oder mehrere Tipps für mich?

    Gruß aus dem verregneten Schwabenland

    Thomas

  • #2
    Hallo Thomas,

    ich hab mir nicht alles genau durchgelesen, aber ActiveX clientseitig ist m.E. kaum mehr notwendig. Zum einem gibt es mit Asp.net/AJAX viele mächtige Möglichkeiten die dies erlauben oder wenn es noch clientseitiger sein soll dann würde ich Silverlight empfehlen bzw. wenn es nur für das Intranet ist dann eine WPF-Browseranwendung. Mit letzerem kann via WebServer eine richtige Client-Anwendung im Browser laufen mit allen Möglichkeiten die sich somit bieten.


    mfG Gü
    (aus dem sonnigen Graz)
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Mich würde interessieren was genau denn JavaScript nicht drauf hat. Und wenn schon clientseitig, dann vernünftig clientseitig wies auch gfoidl beschrieben hat.

      Comment


      • #4
        Heutzutage würde ich Clientseitig nur noch HTML/CSS und JavaScript verwenden.

        Schau dir einfach mal an was so alles damit möglich ist

        Comment


        • #5
          Originally posted by tschroeder View Post
          Mein Ziel ist es, mit VB.NET *.DLLs zu erstellen, dieses Mal nicht für den Server-Code, sondern für die Client-Seite. Hintergrund ist der: Ich möchte ein paar Webanwendungen client-seitig um Funktionen ergänzen, die JavaScript nicht drauf hat.
          Ich glaube in einem Buch gelesen zu haben, dass das nicht geht.
          Die Anwendungen (auch dll's) welche mit .NET erstellt werden beruhen auf dem .Net-Framework, die ActiveX-Dll dagegen auf COM.
          Du kannst aber wahrscheinlich bereits fertige ActiveX-dlls in deine Vb.net-Projekte einbinden.

          Comment


          • #6
            Originally posted by sv00010 View Post
            Ich glaube in einem Buch gelesen zu haben, dass das nicht geht.
            Die Anwendungen (auch dll's) welche mit .NET erstellt werden beruhen auf dem .Net-Framework, die ActiveX-Dll dagegen auf COM.
            Man kann .NET-Komponenten COM-Sichtbar machen so das sie auch von nativen Windows-Anwendungen gerufen werden könnnen. Ist aber wenn es um eine Browser/Webbasierte Lösung handel noch schlechter als eine Silverlight oder die auf einem "CustomControl" Basierte Lösung.

            Comment


            • #7
              Hallo sv00010, Hallo Bernhard,

              vielen Dank für die Infos. Ihr habt vollkommen Recht. Ich müsste im VB.NET-Projekt einrichten, dass die *.DLL auch wie eine COM-Applikation angesprochen werden kann.

              Jetzt, wo ich dies weiß, kann ich mich dahinter klemmen. Das wird nicht einfach, da ich nur das kostenlose MS-Visual Studio 2010 Express habe und dort die COM-Optionen nicht enthalten sind (Wut, Schnauf, Ärger).

              Mal schauen, ob ich noch einen anderen/komplizierteren Weg finde.

              Gruß

              Thomas

              Comment


              • #8
                Das wird nicht einfach, da ich nur das kostenlose MS-Visual Studio 2010 Express habe und dort die COM-Optionen nicht enthalten sind
                Mann markiert seine Assembly mit dem ComVisible Attribut und registriert dann die Assembly per Regasm. Dafür reicht ein Editor und die Kommandozeile. Wie kommst du darauf eine spezielle Visual Studio Version zu benötigen?

                Und obwohl die anderen schon ins selbe Horn geblassen haben. Nochmal von mir, ActiveX für die Webentwicklung ist eine Sackgasse. Hast du mal ein Beispiel für eine Funktion die mit Javascript nicht machbar wäre? (natürlich jenseits von 'ein Loch in die clientseitige Security bohren'. Denn dann könnte man auch gleich viel einfacher eine Desktopanwendung schreiben)

                Comment


                • #9
                  Originally posted by Bernhard Geyer View Post
                  Heutzutage würde ich Clientseitig nur noch HTML/CSS und JavaScript verwenden.

                  Schau dir einfach mal an was so alles damit möglich ist
                  Das würde ich so zu 100% nicht unterschreiben. Firmeninterne RIAs sind mit Sicherheit mit Silverlight leichter und schöner umzusetzen als mit HTML und JS. Klar ist das mittlerweile sehr mächtig, aber von HTML 5 sind wir trotzdem noch weit weg (also von der Verbreitung aus gesehen), ausserdem gibt es trotz allem immer noch Browserinkonsistenzen. Dazu kommt noch, dass ich dafür diverse Frameworks miteinander verbinden muss, was ab und an auch nicht ganz reibungslos möglich ist.
                  Man sollte NIE eine Technologie als die ultimative hinstellen. Jede Technologie hat ihre Vorteile Aber das soll hilft dem Threadersteller wahrscheinlich auch nicht weiter. Sicher ist nur das ActiveX mittlerweile nicht mehr zeitgemäßg ist.

                  Comment


                  • #10
                    Originally posted by fanderlf View Post
                    Firmeninterne RIAs sind mit Sicherheit mit Silverlight leichter und schöner umzusetzen als mit HTML und JS.
                    Das mag stimmen. VS.NET ist auch ein sehr mächtiges Werkzeug um das zu unterstützen.

                    Originally posted by fanderlf View Post
                    Klar ist das mittlerweile sehr mächtig, aber von HTML 5 sind wir trotzdem noch weit weg (also von der Verbreitung aus gesehen),
                    Chrome, Firefox, Opera und Safari könne das schon "lange". Der IE 9 kann es auch schon. Bleiben eigentlich nur die XP die nicht mehr von MS mit dem IE9 versorgt werden.

                    Originally posted by fanderlf View Post
                    ausserdem gibt es trotz allem immer noch Browserinkonsistenzen.
                    Das Problem ist aber geringer geworden. Und läuft die Siverlight-Lösung auch auf iOS (iPhone) und Android? Oder nur auf den spärlichen Phone7-Geräten? Und im Firmenumfeld wollen genügend Mitarbeiter mittlerweile von Ihren Wunder-Geräten aus zugreifen.

                    Originally posted by fanderlf View Post
                    Sicher ist nur das ActiveX mittlerweile nicht mehr zeitgemäßg ist.
                    Das mit sicherheit. ActiveX sollte man meiden solange es geht.

                    Comment


                    • #11
                      Vollkommen Deiner Meinung Es kommt aber trotzdem immer aufs Problem an. Eine normale Webanwendung die willst auch Du nicht über das IPhone bedienen. Das kann ich Dir garantieren. Klar würde es im absoluten Notfall gehen. Spaß macht es aber keinen (wie eigentlich im allgemeinen mit dem IPhone auf nicht optimierten Seiten surfen).

                      Aber es kommt wie immer auf das Problem an!

                      Das Problem mit den Webbrowserversionen ist, dass hier die Verteilung in einzelnen Länder teilweise sehr stark abweichen kann. Es ist nämlich z.B. noch gar nicht so lange her dass IE6 in Russland unter die 5% Hürde gefallen ist. HTML 5 wird kommen, aber bis man sich wirklich drauf verlassen kann und keine Fallback Lösung mehr braucht wird mit Sicherheit noch einige Zeit ins Land ziehen.

                      Comment


                      • #12
                        Hallo Ralf,

                        ich habe mir den Artikel

                        http://msdn.microsoft.com/de-de/libr...v=VS.100).aspx

                        in der MSDN-Datenbank durchgelesen. Darin werden zwei Wege beschrieben, wie man mit Visual Studio 2010 (Vollversion) eine *.DLL als COM-Applikation erstellt. Beides geht bei mir nicht.

                        - Arbeiten mit COM-Klassenvorlagen: Gibt's in der Express-Version nicht.

                        - Projektoptionen / Registerkarte kompilieren / Checkbox "Für COM-Interop registrieren": Gibt's in der Express-Version nicht.

                        Gruß

                        Thomas



                        Originally posted by Ralf Jansen View Post
                        Mann markiert seine Assembly mit dem ComVisible Attribut und registriert dann die Assembly per Regasm. Dafür reicht ein Editor und die Kommandozeile. Wie kommst du darauf eine spezielle Visual Studio Version zu benötigen?

                        Und obwohl die anderen schon ins selbe Horn geblassen haben. Nochmal von mir, ActiveX für die Webentwicklung ist eine Sackgasse. Hast du mal ein Beispiel für eine Funktion die mit Javascript nicht machbar wäre? (natürlich jenseits von 'ein Loch in die clientseitige Security bohren'. Denn dann könnte man auch gleich viel einfacher eine Desktopanwendung schreiben)
                        Zuletzt editiert von tschroeder; 14.06.2011, 11:38.

                        Comment


                        • #13
                          Hallo,

                          habe auch noch folgenden Forenbeitrag gefunden, der sich mit dem Thema befasst.

                          http://social.msdn.microsoft.com/for...2-33e94e46a3a5

                          Gruß

                          Thomas

                          Comment


                          • #14
                            hol dir doch die visual studio testversion. Dann haste 90 Tage Zeit zu testen. Com interop mit der Expressversion kann ich aus Erfahrung nicht empfehlen. (Aufwand/Nutzen)

                            Comment

                            Working...
                            X