Как использовать интерфейсы без .tlb?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Как использовать интерфейсы без .tlb?

Сообщение alibek » 02.09.2003 (Вт) 10:03

Привет, люди добрые :)
Не подскажите, как можно (если вообще можно) использовать интерфейсы в VB без TLB-файлов?
В частности, интересуют IShellLink и IPersistFile.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.09.2003 (Чт) 10:30

Эх, все партизаны :)
Ну тогда хотя бы подскажите, правильно ли я думаю, что .tlb файл компилируется вместе с .exe и его не надо таскать дополнительно?
Lasciate ogni speranza, voi ch'entrate.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 04.09.2003 (Чт) 18:34

Нет не правильно, надо таскать.....

причём в .НЕТ эту проблему так и не решили...
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

fila
Обычный пользователь
Обычный пользователь
 
Сообщения: 58
Зарегистрирован: 04.02.2002 (Пн) 21:20

Сообщение fila » 05.09.2003 (Пт) 22:46

tlb всю жизнь сохранялись в exe как ресурсы.

и, соответственно, грузились оттуда как (с++)
LoadTypeLib(OLESTR("c:\\test.exe\\2"), &ptlib);

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q122/2/85.ASP&NoWebContent=1

в .net проблемы кажется тоже не существует

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconpackagingassemblyforcom.asp

fila
Обычный пользователь
Обычный пользователь
 
Сообщения: 58
Зарегистрирован: 04.02.2002 (Пн) 21:20

Сообщение fila » 05.09.2003 (Пт) 23:22

> Не подскажите, как можно (если вообще можно) использовать интерфейсы в VB без TLB-файлов? В частности, интересуют IShellLink и IPersistFile.

имхо, никак. ну нет у этого сервера IDIspatch, нет. Только писать свой tlb, ее реализующий. Функциональность IShellLink частично реализована в WScript.Shell, если надо всего лишь создавать ярлыки.

проще один раз потратить времени и написать врапперы ко всем нужным интерфейсам, и потом делать из них dll, в которой эти tlb будут храниться как ресурсы.

причем для каждого приложения можно делать свой набор tlb в dll.

то есть, для регистрации такого интерфейса надо будет сделать "regsvr32 mywrap.dll/1" или "regsvr32 mywrap.dll/2" и т.д.

seriy-coder
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 19.03.2006 (Вс) 19:59

Сообщение seriy-coder » 30.08.2006 (Ср) 7:36

а не подскажите ли ЧЕМ можно собрать TLB файл из .inc ?
И заодно какой язык используется для создания TLB

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.08.2006 (Ср) 7:51

Язык MIDL, компилятор C (mktyplib).
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.08.2006 (Ср) 8:03

Sebas писал(а):Нет не правильно, надо таскать.....

причём в .НЕТ эту проблему так и не решили...

Ничего подобного. Описания стандартных интерфейсов (таких, как IShellLink и IPersistFile) за собой таскать не надо. Ни в ресурсах, ни отдельно.

Ответ на исходный вопрос: можно, но очень гиморно. В одну сторону -- через "вызов функций по указателю" и тонну ассемблерных переходников, в другую сторону -- через реализацию объекта руками в виде UDT, а его членов -- функциями в модуле. (Пример реализации IEnumVARIANT без TLB я тебе давал.)
Последний раз редактировалось tyomitch 30.08.2006 (Ср) 8:08, всего редактировалось 1 раз.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.08.2006 (Ср) 8:05

alibek писал(а):Язык MIDL, компилятор C (mktyplib).

Во-первых, mktyplib не имеет никакого отношения к C, и даже поставляется в составе VB (у кого не пиратский диск).
Во-вторых, MIDL и mktyplib используют несколько разные языки. Различий меньше десятка, но этого достаточно, чтобы IDL для одного компилятора не собирался другим :-(


2fila: откуда взялся миф, что VB не может использовать объекты без поддержки IDispatch:?:
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.08.2006 (Ср) 8:52

Вау! Какой баянище раскопали.
tyomitch, думаешь спустя три года fila откликнется?
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.08.2006 (Ср) 9:13

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

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.08.2006 (Ср) 9:23

"... когда мы были молодыми
и чушь прекрасную несли..."(с)
Перечитай хотя бы первые три поста :wink:
Лучший способ понять что-то самому — объяснить это другому.

seriy-coder
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 19.03.2006 (Вс) 19:59

Сообщение seriy-coder » 31.08.2006 (Чт) 7:53

А где бы достать руководство какое чтоли по этому самому MIDLу? ато вчера поковырялся, и кроме своих типов (добавил Char, Int32, Int16 и т.п.) ничего более реализовать не получается =(
Только на русском. Можно впринципе и просто теорию...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 31.08.2006 (Чт) 10:02

MSDN, только вот на аглицком...
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот], Yandex-бот и гости: 46

    TopList