Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Без TLB Добавлено: 30.09.05 11:08  

Автор вопроса:  LamerOnLine | ICQ: 334781088 
Хотелось бы уточнить - есть указатель на определенный объект, который не поддерживает интерфейс IDispatch. Соттветственно, Unsupported Object Type. Как из VB вызвать его методы?
1. Через CallWindowProc, нужно первым параметром передавать ссылку на сам объект?
2. Как еще, кроме вышеназванной функции это сделать? Например, через абстрактный класс, ObjPtr и CopyMemory?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 30.09.05 12:36
TLB - лучший вариант. Ибо таскать его за собой не надо.
Когда-то давно я написал это: http://www.vbstreets.ru/VB/Articles/65974.aspx

Сейчас я так не делаю, ибо нефиг. Но в качестве примера сойдёт.

Ответить

Номер ответа: 2
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #2 Добавлено: 30.09.05 12:38
Как-то упустил вторую часть вопроса...

Перезаписать vTable класса можно, но только в теории. На практике люди сталкивались с тем, что VB перезаписывает её обратно.

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 30.09.05 13:04
Да, интересная статейка. Я тоже сначала так думал сделать, но столкнулся с проблемами. Фича в том, что мне не нужно создавать Instance класса, объект уже существует. У меня есть его IUnknown. QueryInterface VB напрямую вызвать не даст - Restricted и все дела. Через CallWindowProc почему то падает, ща еще проверю.
Мне интересно, может оно потому что я использую не IIDFromString, а UiidFromString. Разницы вроде бы нету...
А TLB - знаю, весчь хорошая, таскать не надо, но порой просто не имеется. Либо несовместимый с VB тип данных (ULong и т.п.)

Ответить

Номер ответа: 4
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #4 Добавлено: 30.09.05 15:59
А когда tlb не имеется, я её всегда делаю, ибо это существенно проще и быстрее, чем использование всего остального. А в заголовок этой tlb я всегда вставляю строки типа typedef ULONG LONG, а потом при использовании библиотеки просто помню, что это на самом деле ULong.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам