Вопрос

У нас есть приложение .NET, которое необходимо изучить папку, которая может содержать библиотеки COM (DLL и OCX), когда мы сталкиваемся с библиотекой COM, одна вещь, которой нам нужно сделать, - это извлечение GUID из COM DLL или OCX.

Есть ли простой способ сделать это с .NET, не используя 3-й партийные библиотеки?

Это было полезно?

Решение

Это должно работать для вас. Это требует ссылки на C: Windows system32 tlbinf32.dll, но я предполагаю, что это нормально, потому что это не сторонняя компонент.

Imports TLI 'from c:\windows\system32\tlbinf32.dll

Dim reglib As TLI.TLIApplication = New TLI.TLIApplicationClass()
Dim DLLPath As String = "c:\mycomponent.ocx"
MsgBox(reglib.TypeLibInfoFromFile(DLLPath).GUID.ToString())

Другие советы

Вам придется использовать Interop (оба P / Invoke, так и COM), чтобы сделать это. Во-первых, вам придется позвонить Loadtypelib Чтобы получить интерфейс iTypelib для библиотеки типа.

Оттуда вам придется использовать методы на том, чтобы получить GUID для библиотеки или получить экземпляры CLSID или IID для чего-либо определенного в библиотеке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top