ActivX.dll на VB.Net в VB 6.0

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

ActivX.dll на VB.Net в VB 6.0

Сообщение shady » 19.12.2007 (Ср) 14:10

Вот понадобилось использовать компонент ReportViewer. Решил сделать ActivX.dll и использовать его из VB 6. Первое сделал, а вот со вторым хуже. В моей длл есть форма с ReportViewer-ом. Соответственно мне нужно всего-лишь его обратиться к процедурам и функциям (которые объявлены как Public Sub). Как же к ним обратиться?
З.Ы. Из Object Browsera я вижу только форму - как класс.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.12.2007 (Чт) 4:25

Вообще (было) никак. Теперь стало кое-как. Скоро будет как.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 20.12.2007 (Чт) 8:59

:shock: а я - то думал что на VB.NET объявил процедуру как-то неправильно...

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 21.12.2007 (Пт) 0:51

Вообще-то достаточно сделать класс в .NET DLL ComVisible = true, а в этом классе определить метод, который будет отображать форму как обычно Form1.Show(). Только вызов Form1.Show() должен быть из .NET библиотеки. VB6 не знает, как обходится с .NET формой.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 21.12.2007 (Пт) 8:26

gaidar писал(а):достаточно сделать класс в .NET DLL ComVisible = true
Это на вкладке assembly information. Поставив галку на Make assembly COM-Visible? (VS 2005)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.12.2007 (Пт) 9:19

gaidar
Или ты не понял, что автору нужно, чтобы в TLB заносилась инфа о модулях и его содержимом, или я непонял, что автору нужно что-то совем другое (видимость методов классов из .NET стало быть).

Кто из нас? :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 21.12.2007 (Пт) 15:10

Спасибо gaidar, все сделал.

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 26.12.2007 (Ср) 13:42

Подскажите пожалуйста, как теперь эту dll распространять со своим приложением? Вопрос собственно в следующем. Если в VB6 создавая ActiveX.DLL после компиляции я получаю нужную мне ДЛЛ, регистрирую ее у пользователя и все работает. Сдесь не совсем понятно чтко делать после компиляции. Если в свойствах проекта поставить Register for COM interop то помимо dll еще создается и tlb.
Пытаюсь зарегистрировать в системе свою длл на что получаю в ответ:
regsvr32.exe писал(а):my.dll была загружена, но найти точку входа для DllRegisterServer не удалось.
Зарегистрировать этот файл невозможно.

Скажите, какуда копать?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.12.2007 (Ср) 13:44

Регистрировать TLB.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 26.12.2007 (Ср) 14:05

regasm-ом?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.12.2007 (Ср) 14:26

Нет, это какая-то дрянь, относящаяся к дрянному .NET-у (а именно, регистратор сборок).

TLB регистрируются функцией RegisterTypeLib. Достаточно загрузить TLB функцией LoadTypeLib, чтобы она зарегистрировалась.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 26.12.2007 (Ср) 15:42

Проверяю на компе, на котором не стоит ничего кроме Фрэймворка, SQL, оффиса и винды.
Короче что-то не совсем понятное твориться. TLB по ходу зарегистрирована. Проверяю это в references (есть).
Открываю редактор макросов. Все, могу обратиться к финкциям класса этой ДЛЛки.
Код: Выделить всё
Dim cls As New MyReportViewer.frmMyReportViewer
cls.ShowMyReport strRSSrvName

При проверке на второй строке кода дебагер мне говорит ActiveX component can't create object.
Сделал на VB.NET тестовый ЕХЕ. Кидаю этот ехе (с одной кнопкой) на подопытный комп (подумав что компонент не может создать моя dll)
Код: Выделить всё
        Dim cls As New MyReportViewer.frmMyReportViewer
        cls.ShowMyReport ("nn")

Все работает. Вопрос. Почему на моей рабочей машине в ВБ 6 вызовы работают, в ЕХЕ, опять же у меня, работают. На тестовой машине не работает.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 26.12.2007 (Ср) 17:15

На тестовой машине Framework должне стоять)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 27.12.2007 (Чт) 10:15

Хакер писал(а):Нет, это какая-то дрянь, относящаяся к дрянному .NET-у (а именно, регистратор сборок).
TLB регистрируются функцией RegisterTypeLib. Достаточно загрузить TLB функцией LoadTypeLib, чтобы она зарегистрировалась.

Как ни странно, но именно эта дрянь и нужна в таких случаях.
http://msdn.microsoft.com/library/RUS/c ... frame=true


Вернуться в Народный треп

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46

    TopList