none
VB.NET DLL in VB6-OCX Active-X Komponente verwenden RRS feed

  • Frage


  • Hallo !

    leider muss ich Teile eines Projekts in VB6 umschreiben:
    So habe ich u.a. "Probleme" beim Benutzen der Registry-API unter Windows 8.1.

    Diese DLL habe ich mit Regasm c:\Test.dll /tlb: Test.tlb /codebase registriert.

    Die TLB kann ich unter VB6 auch einbinden.Das ist völlig unproblematisch. Problematisch wird es nur bei einer OCX-Komponente in VB6.

    Einbinden und aufrufen kann ich die .NET Klasse.

    Zur Laufzeit erhalte ich aber immer wieder den Fehler,

    dass eine Objektvariable nicht festgelegt worden wäre:

    EXE Projekt: Dim test As New Lib.Lib ' Ok
    OCX-Komponente: Dim test As New Lib.Lib ' Hier wird ein Fehler ausgeworfen
    Warum ist das so, und was mache ich falsch bzw. wie kann ich
    eine in VB.NET (2008) erstellte DLL in einer OCX ansprechen ?

    Vielen, Vielen Dank im Voraus !!! Stephan

    Nachstehend ist ein Beispiel in VB2008:

    Option Explicit On
    Option Strict On
    Option Compare Binary
    Imports Microsoft.Win32
    Imports System.Runtime.InteropServices
     
    <ComClass(Lib.ClassId, Lib.InterfaceId, Lib.EventsId)> _
    Public Class Lib
     
    #Region "COM GUIDs"
        ' These  GUIDs provide the COM identity for this class 
        ' and its COM interfaces. If you change them, existing 
        ' clients will no longer be able to access the class.
        Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
        Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
        Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region
     
    <System.Runtime.InteropServices.ComVisible(True)> _
        Public ReadOnly Property SingIt() As String
            Get
                Return "Hello"
            End Get
        End Property
    End Class
    


    • Bearbeitet Move123 Donnerstag, 23. Oktober 2014 13:26
    Donnerstag, 23. Oktober 2014 13:24

Alle Antworten

  • Hallo Move123,

    die Instanziierung in einer OCX sollte nicht anders funktionieren, als in einem Standardprojekt. Sicher, dass der Fehler an der markierten Stelle auftritt? Dann müsste die Fehlermeldung eigentlich anders lauten, als die von dir zitierte.


    Thorsten Dörfler
    vb-faq.de


    Dienstag, 14. April 2015 10:05
    Moderator