LoadTypeLib

Aus API-Wiki
Zur Navigation springenZur Suche springen

COM Server wie ActiveX DLLs und ActiveX EXEn tragen in den meisten Fällen eine oder mehrere Type Libraries in ihren Resourcen mit sich. Über die Informationen dieser Type Library(s) kann die VB IDE auch direkt nach der Referenzierung eines Servers dessen Module, Klassen und deren Funktionen detailiert anzeigen. LoadTypeLib läd solch eine Type Library direkt aus den Resourcen eines Servers und registriert ihn, falls er nicht schon registriert ist.

Declare Function LoadTypeLib Lib "oleaut32.dll" ( _
                 ByVal strServer As Long, _
                 ByRef iunkITypeLib As IUnknown) As Long


Parameter:

strServer

Hier wird ein Pointer auf einen Unicode String erwartet, in VB muss der String daher mit StrPtr() übergeben werden.

iunkITypeLib

LoadTypeLib gibt eine Referenz auf ein ITypeLib Interface zurück. Um es zu nutzen, muss es für VB in einer eigenen Type Library definiert worden sein.


Rückgabe:

Glückt das Laden (und ggf. Registrieren), gibt LoadTypeLib 0 (S_OK) zurück. Andernfalls gibt der Rückgabewert genau Aufschluss über den Fehler, da er ein HRESULT ist.


Anderes:

LoadTypeLib registriert die jeweilige Type Library, wenn nicht der komplette Pfad angegeben wurde. Bei Pfadangabe registriert LoadTypeLib die Type Library nicht. Für die Registrierung einer Type Library allgemein ist RegisterTypeLib zuständig.


Beispiel:

Dim hResultRet As Long
Dim iunkTypeLib As IUnknown

' läd die erstbeste Type Lib aus comdlg32.ocx
hResultRet = LoadTypeLib(StrPtr("C:\Windows\System32\comdlg32.ocx"), iunkTypeLib)

' hätte comdlg32.ocx noch eine zweite Type Lib mit dem Identifier 3,
' könnte man die so auslesen:
hResultRet = LoadTypeLib(StrPtr("C:\Windows\System32\comdlg32.ocx\3"), iunkTypeLib)


Betriebssysteme

  • Windows 95 / 98 / Me
  • Windows NT 4.0 / 2000 / XP
  • Windows Vista


Verweise

MSDN US-Libary [1]




Diese Deklaration wurde von Arne Elster erstellt. Sollten Sie Fragen zur Verwendung der entsprechenden Funktion haben, so verwenden Sie hierfür bitte das Visual Basic Forum, die Artikeldiskussionsseite oder die Nutzerdiskussionsseite.