|
Die Visual Basic-Funktion TypeName liefert Ihnen den Klassen-Namen eines Objekts. Eine Funktion, die Ihnen den Namen der Bibliothek (ActiveX-Komponente oder Typ-Bibliothek) liefert, aus der die Klasse stammt, fehlt jedoch in VB.
Die unten stehende Funktion LibName ermittel den Bibliotheksnamen mit Hilfe der ActiveX-Komponente "TLI" (TlbInf32.DLL). Diese wird von der VB-Entwicklungsumgebung selbst benötigt und steckt im System-Ordner. Sie können sie aber auch in Ihren Projekten verwenden und dazu einen Verweis darauf in ein Projekt aufnehmen (Vergessen Sie nicht, diese Komponente dann auch in das Setup eines Projekts aufzunehmen!). Eine ausführliche Dokumentation der Komponente hat Microsoft nachträglich zur Verfügung gestellt - Sie können sie im Visual Basic-Update-Bereich von Microsoft herunterladen ( TlbInfHT.exe).
Public Function LibName(ByVal Obj As Object) As String
On Error Resume Next
LibName = TLI.InterfaceInfoFromObject(Obj).Parent.Name
End Function
Sie können diese Information auch dazu nutzen, einen so genannten "qualifizierten Typnamen" eines Objekts zu ermitteln. Dieser Besteht aus dem Namen der Bibliothek und dem Klassen-Namen des Objekts, durch einen "." voneinander getrennt. Damit können Sie die Typnamen von Objekten unterscheiden, die zwar den gleichen Klassen-Namen tragen, aber in verschiedenen Bibliotheken enthalten sind.
Public Function QualifiedTypeName(ByVal Obj As Object) As String
Dim nTypeLibName As String
On Error Resume Next
nTypeLibName = TLI.InterfaceInfoFromObject(Obj).Parent.Name
If Err.Number Then
QualifiedTypeName = "VB." & TypeName(Obj)
Else
QualifiedTypeName = nTypeLibName & "." & TypeName(Obj)
End If
End Function
Die TLI-Komponente bietet auch noch eine weitere Möglichkeit für eine eindeutige Identifikation eines Objekts - über den GUID eines Objekts:
Public Function ObjGUID(ByVal Obj As Object) As String
ObjGUID = TLI.InterfaceInfoFromObject(Obj).Guid
End Function
|