Diskussion:LoadTypeLib
Überarbeitet (Vorschlag)
COM Server wie ActiveX DLLs und ActiveX ausführbare Dateien (EXE) beinhalten in den meisten Fällen eine oder mehrere Type Libraries in ihren Resourcen. Ü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 Typenbibliothek 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 Zeiger auf einen Unicode String erwartet, in VB muss der String daher mit StrPtr() übergeben werden.
iunkITypeLib
- LoadTypeLib gibt eine Referenz auf eine ITypeLib Schnittstelle zurück. Um diese nutzen zu können, 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 | Beschreibung |
---|---|
E_OUTOFMEMORY | Außerhalb des Speichers |
E_INVALIDARG | Eines, oder mehrere Argumente sind ungültig |
TYPE_E_IOERROR | Die Funktion konnte nicht in die Datei schreiben |
TYPE_E_INVALIDSTATE | Die Typenbibliothek konnte nicht geöffnet werden |
TYPE_E_INVDATAREAD | Die Funktion konnte nicht aus der Datei lesen |
TYPE_E_UNSUPFORMAT | Das Format der Typenbibliothek ist veraltet |
TYPE_E_UNKNOWNLCID | Die LCID konnte in den OLE-unterstützen DLLs gefunden werden |
TYPE_E_CANTLOADLIBRARY | 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 diese so auslesen: hResultRet = LoadTypeLib(StrPtr("C:\Windows\System32\comdlg32.ocx\3"), iunkTypeLib)
Betriebssystem
- Windows 95 / 98 / Me
- Windows NT 4.0 / 2000 / XP
- Windows Vista
Verweise
MSDN US-Libary [[1]]
MSDN KB 131055 LoadTypeLib registriert Typenbibliothek nicht [[2]]
Nils Thomsen - 16:35, 18. Mär. 2007 (CET)