LoadTypeLib

Aus API-Wiki
Version vom 6. Mai 2008, 20:59 Uhr von Nils Thomsen (Diskussion | Beiträge) (Quellen eingefügt, an Formatvorlage angepasst, Konstanten erweitert, kleine Fehler korrigiert)
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 Typenbibliotheken kann die VB IDE auch direkt nach der Referenzierung eines Servers dessen Module, Klassen und deren Funktionen detailiert anzeigen. LoadTypeLib lädt solch eine Type Library direkt aus den Resourcen eines Servers und registriert ihn, falls dies noch nicht geschehen ist.

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


Parameter

strServer

Zeiger auf einen Unicode String; in VB muss der String 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

Die Funktion gibt als HRESULT den Wert S_OK = &H0 bei Erfolg, bei Misserfolg einen spezifischen Fehlercode (siehe Tabelle) zurück.


Rückgabetabelle

Konstante Wert Beschreibung
[E_OUTOFMEMORY] &H8007000E Außerhalb des Speichers
[E_INVALIDARG] &H80070057 Eines, oder mehrere Argumente sind ungültig
[TYPE_E_IOERROR] &H80028CA2 Die Funktion konnte nicht in die Datei schreiben
[TYPE_E_INVALIDSTATE] &H80028029 Die Typenbibliothek konnte nicht geöffnet werden
[TYPE_E_INVDATAREAD] &H80028018 Die Funktion konnte nicht aus der Datei lesen
[TYPE_E_UNSUPFORMAT] &H80028019 Das Format der Typenbibliothek ist veraltet
[TYPE_E_UNKNOWNLCID] &H8002802E Die LCID konnte in den OLE-unterstützen DLLs gefunden werden
[TYPE_E_CANTLOADLIBRARY] &H80029C4A Die Typenbibliothek oder DLL konnte nicht geladen werden
Andere Fehlerwerte Es können alle FACILITY_STORAGE Fehler zurück gegeben werden


Hinweise

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ädt 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

Microsoft Knowledge Base KB131055 - LoadTypeLib registriert Typenbibliothek nicht

Quellen

MSDN US-Libary



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.