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