Announcement

Collapse
No announcement yet.

ActiveX unter .NET enwicklen

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

  • ActiveX unter .NET enwicklen

    Hallo!

    Ich habe folgendes Problem: ich muss für eine existierende Anwendung(Navision) eine ActiveX-Elemente unter .NET schreiben. Bisher kenne ich nur die Möglichkeit eine COM-Komponente mit Hilfe von VS.NET zu entwickeln.
    Eine COM-DLL kommt nicht in Frage da die Anwendung(Navision) Probleme mit diesen hat da die beiden dann in einem Prozeß laufen würden was zu unerwarteten Problemen führen kann.

    D.h. also dass ich nun eine ActiveX-Komponente anlegen muss die ja eigenen/unabhängigen Prozeß besitzt oder auf eine andere Alternative(die ich bis jetzt nicht gefunden habe) nutzen.

    Die Frage ist also, ob man z.b. mit VS.NET eine ActiveX-Komponetnte entwickelt werden kann. Oder ob es dazu eine Alternative gibt.

    Danke!

  • #2
    Und wieso gibt es mit COM-DLL's Probleme? Ist das wohl ein (bekantes) grundsätzliches Problem von Navision?
    Hattest Du ein .NET-Control per COM-Wrapper unter Win32 verfügbar gemacht oder direkt ein COM-DLL mittels C++-Teil von VS.NET entwickelt.

    Ein ActiveX-Element ist für Oberflächen-Controlls gedacht und kann AFAIK auch eine DLL sein. Eine COM-Schnittstelle kann grundsätzlich als DLL oder Exe auftreten je nach implementierung. Wenn Du z.B. einer bestehenden Anwendung ein Automatisierungs-Interface verpaßt bleibt die Anwendung immer noch eine Exe

    Comment


    • #3
      Ich bin ganz neu auf diesen Gebiet und kann nicht ganz nachvollziehen was du meinst. Ich habe es jetzt so verstanden dass die COM-Schnittstelle als eine EXE und nicht als DLL implementiert werden muss damit es nun lauffähig ist.
      Richitg?
      Und was meinst du mit "Automatisierungs-Interface"?

      PS: Die COM-Schnittstelle habe ich mit VS.NET in C# programmiert

      Comment


      • #4
        Du kannst im COM-System sowohl Exes als auch DLL's implementieren. Nur manche "Spezialfälle" wie Controls oder COM+-Komponenten müssen DLL's sein.

        "Automatisierung-Interface" (Automatisierungsobjekt) ist wieder ein Spezialfall. Lies dir mal den <a href="http://de.wikipedia.org/wiki/Component_Object_Model">Wiki-Artikel</a> durch.

        > Die COM-Schnittstelle habe ich mit VS.NET in C# programmiert.

        D.h. du hast ein .NET Custom Control/Klasse entwickelt und dann per Wrapper für Win32 verfügbar gemacht

        Comment


        • #5
          Ich habe in VS.NET eine Klassenbibliothek angelegt und über COM-Interop-Service von VS.NET die ertellte DLL registriert

          Comment


          • #6
            Ich habe in VS.NET eine Klassenbibliothek angelegt und über COM-Interop-Service von VS.NET die erstellte DLL registriert. Das problem ist ich kann auch keine EXE als Klassenbibliothek erstellen.

            Anderes Problem das mir noch aufgefallen ist: der Speicher nach dem Aufruf der COM-Komponente wird nicht freigegeben, erst wenn ich das aufrufende Programm deende, wird auch der Speicher freigegeben

            Comment


            • #7
              > Das problem ist ich kann auch keine EXE als Klassenbibliothek erstellen.

              Geht per Definiton auch nicht. Klassenbiblitheken stellen keine von sich aus lauffähige SW-Komponenten dar (können nur von anderen Anwendungen verwendet werden) und müssen deshalb auch eine DLL sein.

              > Anderes Problem das mir noch aufgefallen ist: der Speicher nach dem Aufruf der COM-Komponente wird nicht freigegeben

              Das könnte an .NET liegen die erst bei Gelegenheit den speicher Frei gibt (Garbage Collection). Oder auch nur daran das Navision eine schrottige, fehlerhafte COM-Schnittstelle hat

              Comment

              Working...
              X