Страница: 1 |
Подскажите ссылку на работоспособный пример вызова класов .NET из VB6 Что то типа.. Dim rt As mscoree.CorRuntimeHost Dim unk As IUnknown Dim ad As ComRuntimeLibrary.AppDomain Dim s As ComRuntimeLibrary.Stack Private Sub Form_Load() Set rt = New mscoree.CorRuntimeHost rt.Start rt.GetDefaultDomain unk Set ad = unk Set s = ad.CreateInstance("mscorlib", _ "System.Collections.Stack").Unwrap s.Push "Hello" s.Push "Goodbye" s.Push 42 MsgBox s.Pop() MsgBox s.Pop() MsgBox s.Pop() End Sub .......... . . . .
Дело в том, что мне нужно вызывать стандартные классы .NET Framework. Я добавил в VB6 ссылку на mscoree.tlb и в браузере объектов увидел нужные мне классы, однако как их использовать непонятно... При попытке создания экземпляров классов выдается сообщение: "Сan create ActiveX object..." Вроде да.. Хотелось бы увидеть хотя бы один работоспособный исходник на VB6 в котором используются классы .NET Framework Спасибо за помощь, удалось найти пример использования .NET классов в VB6, в книге Д.Эпплмана "Переход на VB.NET стратегии, концепции, код". Эти исходники лежат на сайте www.piter.com/download Весь фокус в том, что при компиляции класса, в свойствах проекта надо установить флажок Register for COM Interop, правда при этом компонет позволяет использовать только позднее связывание. Что бы использовать раннее связывание, нужно вручную описать интерфейс компонента, вот пример такого класса: Imports System.Runtime.InteropServices End Interface Implements _CallFromCOM2 Return i * 2 End Function Return i * 2 End Function Return i * 3 End Function MsgBox("I'm being registered!!! :" & T.FullName) End Sub End Class В результате после компиляции получим еще и .tlb на которую можно делать ссылку из VB6 Собственно, установка этой галки эквивалентно использованию утилиты RegAsm.exe. Я это делал так. RegAsm.exe clsFinder.dll /tlb /codebase При этом создается tlb-файл и что-то пишется в реестр. И это надо делать на каждой машине, куда установишь свою программу. Страница: 1 |
Вопрос: Вызов классов .NET из VB6
Добавлено: 07.04.04 10:09
Автор вопроса: alex
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 07.04.04 11:46
Нужно обработать .Net DLL утилитой regasm.exe (если мне не изменяе
память), и тогда у нему можно иметь доступ как к обычному ActiveX.
Ещё нужно в атрибутах сборки отметить, что она видима из COM (атрибут,
ИМХО, называется ComVisibleAttribute, устанавливается по умолчанию в
True при создании проекта).
Номер ответа: 2
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #2
Добавлено: 07.04.04 12:12
Номер ответа: 3
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #3
Добавлено: 07.04.04 15:55
CreateObject?
Номер ответа: 4
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #4
Добавлено: 07.04.04 17:17
Номер ответа: 5
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #5
Добавлено: 08.04.04 14:19
Номер ответа: 6
Автор ответа:
Alex3
ICQ: 9481061
Вопросов: 18
Ответов: 132
Профиль | | #6
Добавлено: 08.04.04 18:11