Создание ActiveX

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Создание ActiveX

Сообщение trailer » 16.10.2008 (Чт) 15:56

В VB6 самый простой ActiveX Control создается так:
1) выбрать ActiveX Control в меню File -> New Project...
2) в меню File выполнить команду Make Project1.ocx...

И ВСЁ!!! 2 действия и у нас есть файлик, который можно зарегистрировать (RegSvr32) на другом кампутере и он будет доступен скажем в Word или Excel

искал наверно с месяц как сделать тоже самое на VB.NET 2005??

1) создаем новый проект File -> New Project -> VisualBasic -> Windows -> WindowsControlLibrary
2) Build -> Build Solution

получаем DLL которую не видит ни кто и ничто, которую нельзя зареристрировать... и вообще это как я понял не ActiveX

где то писали что класс нужно сделать ComVisible=True (не помогло)
где то писали создать обычный Dll... удалить класс, добавить Com-класс (не помогло)

может кто нить найдется кто не скажет "всё просто... ищи на Google...", а "нарисует" что делать чтоб было от чего отталкаваться... самый примитивный АктивИкс

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

Re: Создание ActiveX

Сообщение ANDLL » 16.10.2008 (Чт) 16:33

trailer писал(а):где то писали что класс нужно сделать ComVisible=True (не помогло)
где то писали создать обычный Dll... удалить класс, добавить Com-класс (не помогло)
Да? Ну по действиям тогда, почему не помогло?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 16.10.2008 (Чт) 19:11

ANDLL писал(а):Да? Ну по действиям тогда, почему не помогло?

не помогло потому что:
1) среди возможных объектов нету WindowsControl1.Control1 (или как то так... вобщем как проект называется поумолчанию)
2) RegSvr32 как выдавал ошибку, так и выдает "...не могу найти точку входа..."

и вообще то это я прошу по действиям... Что надо сделать???
1) создаем новый проект File -> New Project -> VisualBasic -> Windows -> WindowsControlLibrary - это хоть правильно?? может не это надо выбирать??
последнее я тоже вроде правильно делаю: Build -> Build Solution

а вот что между?? непонятно... и главное нигде нету примера... обсуждений много... а примеров 0... даже в книжках смотрел... для VB6 чуть ли не в каждой книжке... а для .NET все стороной обходят... только тут одни лузеры как я... толи крутые программисты сами пока не разобрались, но признаться боятся)))

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

Re: Создание ActiveX

Сообщение Sebas » 16.10.2008 (Чт) 19:17

trailer писал(а):
ANDLL писал(а):Да? Ну по действиям тогда, почему не помогло?

не помогло потому что:
1) среди возможных объектов нету WindowsControl1.Control1 (или как то так... вобщем как проект называется поумолчанию)
2) RegSvr32 как выдавал ошибку, так и выдает "...не могу найти точку входа..."

и вообще то это я прошу по действиям... Что надо сделать???
1) создаем новый проект File -> New Project -> VisualBasic -> Windows -> WindowsControlLibrary - это хоть правильно?? может не это надо выбирать??
последнее я тоже вроде правильно делаю: Build -> Build Solution

а вот что между?? непонятно... и главное нигде нету примера... обсуждений много... а примеров 0... даже в книжках смотрел... для VB6 чуть ли не в каждой книжке... а для .NET все стороной обходят... только тут одни лузеры как я... толи крутые программисты сами пока не разобрались, но признаться боятся)))


Регистрировать нужно не DLL, а сгенериованный TLB
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 16.10.2008 (Чт) 20:07

ANDLL писал(а):Да? Ну по действиям тогда, почему не помогло?

Sebas писал(а):Регистрировать нужно не DLL, а сгенериованный TLB


вот видишь ANDLL, не помогло хотя бы потому что не DLL нужно регистрировать, а TLB

итак... TLB нету в папочки... только DLL, PDB и XML...

поковырялся и получилась эта TBL (в project properties на закладке Compile галочку пославил Register for COM interop, а на закладке Application нажал кнопочку Assembly Information и там галочку Make assembly Com-Visible)
Опять же вопрос почему "Знающие" считают что поумолчанию это уже сделано??? или у меня Visual Studio не правильный какой то??? я же прошу Если это не сложно по пунктам что надо сделать чтоб получить работающую ActiveX...

далее... зареристрировать TLB... В ЯНДЕКСЕ:
по первой ссылке
TREGSVR *.tlb

по второй
Зарегистрировать компонент можно используя утилиту Regsvcs


НУ нету у меня ни одной ни другой... неужели VB.NET - это такой геморой для разработчиков??? почему нельзя как в Vb6?? чтоб все просто было

мне уже смешно... для VB6 даже с картинками можно найти)) ... а для VB.NET даже на microsoft'e нету никакого примера... Аааа... они и сами не знают наверное... сотварили Чудо)))

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

Re: Создание ActiveX

Сообщение Sebas » 16.10.2008 (Чт) 20:31

сопли утереть?

regasm /codebase file.dll

тлб лежит рядом.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 16.10.2008 (Чт) 21:02

Sebas писал(а):сопли утереть?
regasm /codebase file.dll


угу... так DLL надо регить или TLB??
специалистов много, а опредилиться никак им)))

ну ладно... regasm я нашел... куча текста... в конце волшебное successful)))
но разница между VB6 VB.NET:
в VB6 в Project -> Components появился Project1 (контрол созданный VB6)... в контрола созданного VB.NET НЭТ((( если нажать Browse и попытаться WindowsControlLibrary.DLL подцепить, то "бла бла бла... was not registerable as an ActiveX Component"

пожалуйста, еще раз сопли мне утрите :oops:

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

Re: Создание ActiveX

Сообщение Sebas » 17.10.2008 (Пт) 9:12

зачем Browse ?!?!?! ищи её в референсах. я ж говорю - используется TLB
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 17.10.2008 (Пт) 13:29

trailer писал(а):ну ладно... regasm я нашел... куча текста... в конце волшебное successful)))


Зря я кучу текста не прочел...

RegAsm : warning RA0000 : Регистрация сборки без подписи с использованием параме
тра /codebase может вызвать конфликт данной сборки с другими приложениями, котор
ые могут быть установлены на том же компьютере. Параметр /codebase предназначен
только для сборок с подписями. Присвойте сборке строгое имя и повторите регистра
цию.
Типы зарегистрированы успешно
видимо еще какое то волшебное действие нужно сделать...

:?: может кто нить здеть не только в теории представляет как создать на VB.NET ActiveX (в теории я тоже представлял)... а и создавал их на практике??))

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 17.10.2008 (Пт) 13:43

:shock: Уу... раз никто не ответил в этой теме с января можно подумать что в VB.NET нельзя реализовать ActiveX

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

Re: Создание ActiveX

Сообщение tyomitch » 17.10.2008 (Пт) 14:02

trailer писал(а): :?: может кто нить здеть не только в теории представляет как создать на VB.NET ActiveX (в теории я тоже представлял)... а и создавал их на практике??))

лолнах, прикинь, да!
viewtopic.php?p=78325#p78325
Изображение

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 17.10.2008 (Пт) 14:54

tyomitch писал(а):
trailer писал(а): :?: может кто нить здеть не только в теории представляет как создать на VB.NET ActiveX (в теории я тоже представлял)... а и создавал их на практике??))

лолнах, прикинь, да!
viewtopic.php?p=78325#p78325

эээ... это что было??? это пример ActiveX??? а где форма??? а почему после такие коменты идут:
Чёт не работает нифига
Пример-то дай? А то у меня даже экземпляр не создаётся.
???

и как мне узнать как был сделан ActiveX ??? (если это ActiveX) или каждый раз нужно начитать с этого примера??

может на VB.NET в отлии от VB6 ActiveX создается несколько дней и поэтому никто не может описать этот процесс???

почему все дают ссылки типа "посмотри тут... может ты поймешь (я то не понял, но не признаюсь... я ведь считаюсь программистом)"??

ОГРОМНАЯ ПРОСЬБА: если кто знает как создаются ActiveX на VB.NET, напишите по пунктам создание самого простого контрола

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

Re: Создание ActiveX

Сообщение tyomitch » 17.10.2008 (Пт) 16:01

trailer писал(а):
tyomitch писал(а):
trailer писал(а): :?: может кто нить здеть не только в теории представляет как создать на VB.NET ActiveX (в теории я тоже представлял)... а и создавал их на практике??))

лолнах, прикинь, да!
viewtopic.php?p=78325#p78325

эээ... это что было??? это пример ActiveX??? а где форма??? а почему после такие коменты идут:
Чёт не работает нифига
Пример-то дай? А то у меня даже экземпляр не создаётся.
???

Это пример ActiveX.
Без установки Студии он у меня действительно не заработал.
Потом просто и без трюков появился в списке доступных компонентов.
А зачем форма?

trailer писал(а):и как мне узнать как был сделан ActiveX ??? (если это ActiveX) или каждый раз нужно начитать с этого примера??

Не знаю. Например, спросить у автора этого компонента?
Изображение

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Re: Создание ActiveX

Сообщение Atoman » 17.10.2008 (Пт) 18:56


trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 18.10.2008 (Сб) 9:16


:?: Это "правильный" способ??
:?: Неужели чтоб создать ActiveX в VB.NET его нужно предварительно создать в VB6??
:?: А для чего в VB.NET такие разделы в меню New Project как WindowsControlLibrary, если никто ими неумеет пользоваться... (конечно сейчас некоторые "особо-программисты" скажут ищи в Google или дадут еще какую ссылку на создание ActiveX из Delphi или даже из MASM... )))

не то чтоб хочу кого то обидеть, но таких "особо-программистов" как Atoman, прошу не кидать больше ссылок на неверные, кривые, и д.р не правильные способы создания ActiveX :evil: ... ссылки типа "а зачем тебе ActiveX, купи лучше валенки"... ссылки типа google и yandex... и вообще ссылок не надо... прошу на этом форуме объяснить как создается ActiveX средствами VB.NET

Спасибо

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Re: Создание ActiveX

Сообщение areh » 21.10.2008 (Вт) 9:45

Испытываю анлогичне проблеммы..

единственное, что создать и использовать компонент на своем компьютере получается.

использую вот этот кусок руководства из MSDN (Visual Basic Language Concepts -> Walkthrough: Creating COM Objects with Visual Basic 2005)
To create a COM object using the COM class template
1. Open a new Windows Application project from the File menu by clicking New Project.
2. In the New Project dialog box under the Project Types field, check that Windows is selected. Select Class Library from the Templates list, and then click OK. The new project is displayed.
3. Select Add New Item from the Project menu. The Add New Item dialog box is displayed.
4. Select COM Class from the Templates list, and then click Add. Visual Basic adds a new class and configures the new project for COM interop.
5. Add code such as properties, methods, and events to the COM class.
6. Select Build ClassLibrary1 from the Build menu. Visual Basic builds the assembly and registers the COM object with the operating system.

после того как проект скомпилирован, на локальном компьютере все работает, объект исользуется из AutoCAD'а, и все работает..

переношу готовый компонент на другой компьютер.
регистрирую его с помощью "regasm.exe /tlb DLLFile"
мне он говорит что все зарегистрировано успешно (появляется TLB файл, который я не копирую вместе с DLLкой на клиентский компьютер)

в VBA-Reference библиотеку мою становится видно. в коде макросов (AutoCAD) можно их использвать (видны все классы и их методы)

НО, при запуске этого макроса выдает непонятную ошибку: Automation Error. The system cannot find the file specified.
подскажите, что с этим можно сделать?


PS да, у меня к моей NET сборке подключена COM библиотека OLEAutomation, чтобы данные из AutoCAD'а передать в макрос..

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

Re: Создание ActiveX

Сообщение Sebas » 21.10.2008 (Вт) 11:54

trailer писал(а):

:?: Это "правильный" способ??
:?: Неужели чтоб создать ActiveX в VB.NET его нужно предварительно создать в VB6??
:?: А для чего в VB.NET такие разделы в меню New Project как WindowsControlLibrary, если никто ими неумеет пользоваться... (конечно сейчас некоторые "особо-программисты" скажут ищи в Google или дадут еще какую ссылку на создание ActiveX из Delphi или даже из MASM... )))

не то чтоб хочу кого то обидеть, но таких "особо-программистов" как Atoman, прошу не кидать больше ссылок на неверные, кривые, и д.р не правильные способы создания ActiveX :evil: ... ссылки типа "а зачем тебе ActiveX, купи лучше валенки"... ссылки типа google и yandex... и вообще ссылок не надо... прошу на этом форуме объяснить как создается ActiveX средствами VB.NET

Спасибо


КИнул бы проект тестовый, посмотрим где косячишь...
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 21.10.2008 (Вт) 20:49

areh писал(а):использую вот этот кусок руководства из MSDN...


но это СОМ ДЛЛ, насколько я понял... типа как просто ДЛЛ в ВБ6 (она ДЛЛ, но не Натив, а СОМ)... такое мне тоже наверно понадобиться но не сейчас... мне нужно именно АктивИкс... т.е. с формой... как .ОСХ в ВБ6...

собственно в ВБ.НЕТ я не работал... то что мне надо можно и на ВБ6 сделать, но мне очень бы кстати нормальные классы использовать (с переопределением функций, со статическими членами... вобщем всё что позволяет ООП и чего нет в ВБ6) ... посему я может чего то не догоняю... но напервый взгляд (по аналогии с ВБ6) нужно начинать с WindowsControlLibrary, а не с Class Library

Sebas писал(а):КИнул бы проект тестовый, посмотрим где косячишь...

да не вопрос...)))
Вложения
WindowsControlLibrary1.rar
пример как Не надо делать)))
(39.6 Кб) Скачиваний: 102

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Re: Создание ActiveX

Сообщение Atoman » 21.10.2008 (Вт) 21:55

По той ссылке(что я довал выше) скачай Interop Forms Toolkit 2.0(InteropFormToolsInstaller.msi 5.2 MB),
и будут тебе примеры, и COM и ActiveX.
Вложения
InteropUserControlLibrary.png
InteropUserControlLibrary
InteropUserControlLibrary.png (30.51 Кб) Просмотров: 3503
InteropUserControl.png
InteropUserControl
InteropUserControl.png (29.52 Кб) Просмотров: 3488

trailer
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.10.2008 (Чт) 15:38

Re: Создание ActiveX

Сообщение trailer » 22.10.2008 (Ср) 9:25

Atoman писал(а):По той ссылке(что я довал выше) скачай Interop Forms Toolkit 2.0(InteropFormToolsInstaller.msi 5.2 MB),
и будут тебе примеры, и COM и ActiveX.


а в этом проекто мне буду доступны все возможности VB.NET?? мне нужно будет на других ПК только ФреймВорк?? или может MSVBVM60.dll??
а стандартными средствами создать ActiveX в VB.NET нельзя??? и кто может это знать (здесь как я понял никто, в Microsoft-e тоже к сожалению никто не знает...)))

и еще... что же тогда создаю я в примере который выложил?? чего это должно получиться по замыслу MicroSoft-a? и чем это будет отличаться от AxtiveX написаное на VB6

и что создает areh?? COM-DLL аналагичную COM-DLL на VB6?? или опять что то непонятное всем, кроме разработчика VisualStudio?)))

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

Re: Создание ActiveX

Сообщение Viper » 22.10.2008 (Ср) 10:58

Прицепленый проект после добавления открытого свойства элементу управления и компиляции успешно виден как в .NET, так и в VB6. Однако, использование компонента кк элемента управления возможно только в .NET, а с точки зрения VB6 это всего лишь ActiveX DLL. Походу должно быть что-то еще позволяющее либо создать непоседственно файл .ocx, либо другим способом использовать элемент управления из полученной DLL.
Весь мир матрица, а мы в нем потоки байтов!

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

Re: Создание ActiveX

Сообщение Sebas » 22.10.2008 (Ср) 12:41

trailer писал(а):
Atoman писал(а):По той ссылке(что я довал выше) скачай Interop Forms Toolkit 2.0(InteropFormToolsInstaller.msi 5.2 MB),
и будут тебе примеры, и COM и ActiveX.


а в этом проекто мне буду доступны все возможности VB.NET?? мне нужно будет на других ПК только ФреймВорк?? или может MSVBVM60.dll??
а стандартными средствами создать ActiveX в VB.NET нельзя??? и кто может это знать (здесь как я понял никто, в Microsoft-e тоже к сожалению никто не знает...)))

и еще... что же тогда создаю я в примере который выложил?? чего это должно получиться по замыслу MicroSoft-a? и чем это будет отличаться от AxtiveX написаное на VB6

и что создает areh?? COM-DLL аналагичную COM-DLL на VB6?? или опять что то непонятное всем, кроме разработчика VisualStudio?)))



ещё потребуется вот это microsoft.interopformsredist.msi

Вообщем, Atoman дал ссылку по которой всё понятно. ДУмаю дальнейшее обсуждение бесполезно. Качай аддин и делай свой контрол.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru


Вернуться в Visual Basic .NET

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

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

    TopList