gifts2017

Как посмотреть содержимое dll

Опубликовал Dmitry Glavin (kraftvkv) в раздел Программирование - Практика программирования

Простой способ залезть внутрь dll

Т.к. разработчики линивые люди и не любят писать инструкции, то приходится самим разбираться и искать то, чего они не написали.

Часто бывают случаи, когда есть dll, мы догадываемся, что она что-то умеет делать, но не знаем, какие у нее есть экспортные функции и какие нужно передавать туда входные параметры. Или еще хуже, когда есть инструкция, все делаем по ней, передаем нужное количество параметров, а она нам ругается, что либо не хватает параметров, либо тип не соответствует. Можно искать ответа у разработчиков, но это может затянуться на очень длительное время. 

Итак, рассмотрим пример на штатной dll от 1С - Comcntr.dll. Данная dll используется для соединений с другими источниками информации. Сейчас узнаем, что же там есть еще, кроме всем известного COMConnector.

Идем в Exсel  и открываем Visual Basic сочетанием клавиш Alt+F11

 1

Далее идем Tool->References, в открывшемся окне ищем нашу dll, если она уже регистрировалась в реестре, и отмечаем галкой, или же нажимаем кнопку Browse и указываем путь к dll, программа сама добавит ее и отметит галку, если данная dll имеет интерфейс. Нажимаем ОК.

 2

 

 

Далее идем View -> Object Browser или нажимаем F2. В левом верхнем углу выбираем из выпадающего списка нашу dll и смотрим ее содержимое.

Если выделить процедуру в правов окне, то увидим ее параметры и описание

К примеру, если создадим не 

Соединитель = Новый COMObject("V83.COMConnector");

а

Соединитель = Новый COMObject("V83.IServerAgentConnection");

То получим много интересных возможностей...

Дерзайте, инструмент показал, дальше дело за вами.

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Артем Бардюг (Йожкин Кот) 25.09.15 23:01
Зачем читать справку?? Я лучше через Excel буду интерфейсы смотреть... Также намного удобнее
2. Павел Алексеенко (qwinter) 26.09.15 10:36
(1) Йожкин Кот, можно ссылку на эту справку? Я ее с удовольствием почитаю)))
3. Павел Алексеенко (qwinter) 26.09.15 11:13
А как другие классы и интерфейсы из компоненты зарегистрировать?
4. Виктория Дорохина (vikad) 26.09.15 13:44
(0) а у меня даже есть обработка для получения интерактивной справки по программным интерфейсам))
Прикрепленные файлы:
TLIApplication.epf
CratosX; artichoke; RomanRomans; JohnyDeath; +4 Ответить 1
5. bulpi bulpi (bulpi) 26.09.15 15:08
(4) vikad,
А где взять Новый COMОбъект("TLI.TLIApplication") ?
6. Виктория Дорохина (vikad) 26.09.15 15:22
(5) bulpi, как вариант - поставить Инструменты разработчика - там есть пункт меню Административная регистрация COM компонент - нужно выделить компоненту "Вычисление контекста COM объектов" (TLBINF32 - Библиотека функций для извлечения информации из библиотек типов. Используется в контекстной подсказке при обработке COM типов) и нажать Установить. Или вытащить ее вручную из макета TLBINF32 обработки ИрПлатформа
7. rtnm rtnm (rtnm) 26.09.15 18:12
(2) qwinter, приложил скриншот справки
Прикрепленные файлы:
Йожкин Кот; +1 Ответить 1
8. Борис Коломин (ПерваяСистема) 27.09.15 00:37
хм, всегда пользовался идой ...
9. TMV 27.09.15 09:48
(7) rtnm, Ахахааха. А теперь для "Scale1C.dll"?
10. rtnm rtnm (rtnm) 27.09.15 21:39
11. TMV 28.09.15 11:45
(10) rtnm, причем здесь драйвера Атол? Вы по имени dll определяете чье оно?))
12. Андрей Гердт (AndreyNit) 29.09.15 13:35
Автору плюс. Думаю данная статья пригодится.
13. Михаил Максимов (МихаилМ) 29.09.15 13:45
автор забыл указать, что метода применима к dll содержащей COM интерфейсы.
cool.vlad4; artbear; +2 Ответить
14. trade70 29.09.15 13:46
очень понравилась статья...если учесть что для этого есть другие инструменты для извлечения такой инфы.
а особенно понравилось слово дерзайте после такой "развернутой" статьи, которая содержит столько Новый или нового))
15. Deborah Grobby (debby) 14.10.15 09:13
16. Ийон Тихий (cool.vlad4) 26.10.15 01:11
заголовок неверный. это способ просмотра интерфейсов(соответственно методов) dll реализующий com . (далеко не всякая dll это com) . и для этого не обязательно нужен офис . а нужен любой OLE/COM Object Viewer
в поставке микрософтовского кита есть см https://msdn.microsoft.com/en-us/library/d0kh9f4c.aspx
(содержимое же dll смотрится разными вещами, смотря что нужно. например dumpbin)
ps коммент не увидел сначала 13. там верно написано.