Как я могу увидеть интерфейсы файла OCX? - PullRequest
4 голосов
/ 16 марта 2011

Я хочу увидеть интерфейсы файла .ocx. Как это:

enter image description here

Но для некоторых .ocx я вижу только 5 функций, например:

enter image description here

Вопрос в том, как я могу увидеть интерфейсы этих ocx-файлов. Я должен попробовать это:

A.
а) Я хочу зарегистрировать его и увидеть в визуальной студии. Но когда я регистрирую его, появляется сообщение об ошибке «Ошибка LoadLibrary (путь: \ filename.ocx)». Как это:

enter image description here

b) Затем я использовал 'Dependency Walker', открыв ocx, обнаружил, что у файла нет DLL-файлов. enter image description here

в) Как я могу его зарегистрировать?

B. Я использую «Dll Export Viewer», и теперь я вижу имя функции, но все еще не могу получить параметры функции. Как я могу получить параметры функции?

Ответы [ 4 ]

4 голосов
/ 16 марта 2011
1 голос
/ 16 марта 2011

Импорт библиотеки типов с помощью Импорт библиотеки типов .

Поскольку вы используете C ++, возможно, проще всего сделать это с #import.

В этой статье Code Project приведены пошаговые инструкции.

1 голос
/ 16 марта 2011

Интерфейс описан в библиотеке типов (TLB). Ваша DLL (OCX - это DLL) должна содержать TLB в ресурсе TypeLibrary. Вы можете извлечь этот TLB и получить описание интерфейса. Эту работу также должен выполнять OLE View.

Если ваша DLL не содержит TLB и файл TLB не предоставлен, вы не получите описание интерфейса.

Редактировать: Такие инструменты, как «Просмотр экспорта DLL», показывали меньше информации, чем OLE View. Стоит использовать инструменты, предоставляемые Microsoft.

Когда у вас есть оформленные имена на скриншоте файлов, вы получаете сигнатуры функций с помощью «Microsoft (R) C ++ Name Undecorator» (undname.exe)

0 голосов
/ 16 марта 2011

Давным-давно я использовал этот инструмент под названием XRay: X-Ray Vision . Это было довольно просто для использования и все еще работает в Windows 7, я полагаю. Но, как и другие инструменты, для встраивания библиотеки типов требуется DLL / OCX, либо вам нужно найти соответствующую.

...