2011-01-06 8 views
1

GetRecordInfoFromGuids erfordert die typelib registriert sein, aber ich will nicht meine typelib (Projektanforderungen) registrieren, weil ich es mit verwenden:Alternative zu GetRecordInfoFromGuids - Get IRecordInfo ohne typelib sein registriert

#import "ComService.tlb" 

Wie kann Ich bekomme die IRecordInfo ohne GetRecordInfoFromGuids?

+0

ich nicht folgen, ist #import Zeit kompilieren. Es hat nichts damit zu tun, ob es einen Registrierungsschlüssel gibt, der hilft, die .tlb zur Laufzeit zu finden. –

+0

Richtig, #import ist früh verbindlich. Das Problem ist, dass GetRecordInfoFromGuids die Registrierung abfragen wird. Ich möchte die Datensatzinformationen direkt von der Tlb erhalten, die ich importiere. Irgendwelche Ideen, wie man das macht? –

Antwort

1

Ich denke, dass Sie die GetRecordInfoFromTypeInfo Funktion verwenden können. Der erste Parameter dieser Funktion ist ein Zeiger auf die ITypeInfo-Schnittstelle.

Sie können die Typelib manuell mit der Funktion LoadTypeLibEx laden und den erforderlichen ITypeInfo-Zeiger finden.

+0

LoadTypeLib/LoadTypeLibEx erfordern, dass ich die Typelib als Ressource in meine ausführbare COM-Server-Datei (.exe) einbetten. Ich möchte nicht die Typelib auf dem System (das ist eine private Schnittstelle) registrieren noch die TLB mit der Anwendung. –

+1

LoadTypeLibEx nicht erforderlich typelib Registrierung. Sie können Typelib aus Datei oder Ressource laden. – Victor

0

Eine Option ist Registration-Free COM zu verwenden. Sie können COM-Registrierungen in den Manifestdateien Ihrer Binärdatei definieren, anstatt sie in der Registrierung zu speichern. Ich habe in diesem Szenario UDTs verwendet und es funktioniert großartig. Sehen Sie diese Komplettlösung:

http://msdn.microsoft.com/en-us/library/ms973913.aspx