Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
atos
0 / 0 / 0
Регистрация: 10.12.2009
Сообщений: 34
#1

Процесс регистрации элемента ActiveX - C++

26.12.2009, 23:53. Просмотров 1258. Ответов 2
Метки нет (Все метки)

Объясните пожалуйста процесс регистрации элемента ActiveX.

Запуск regsvr32.exe c параметрами:
regsvr32 MyActiveX.ocx
затем
regsvr32 /u MyActiveX.ocx

Так рекомендуют делать в Activex с www.codeproject.com

Непонятно зачем вторая строка. Или она просто убирает элемент из регистрации?

Еще вопрос: можно ли как-то автоматически регистрировать ActiveX на каждом компьютере куда перепишут программу чтобы не напрягать пользователя?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2009, 23:53     Процесс регистрации элемента ActiveX
Посмотрите здесь:

ActiveX - C++
Хотелось бы узнать, действительно ли в связи с развитием .NET это направление пользовательских элементов управления (которые могут работать...

HWND в ActiveX - C++
Помогите! Кто знает, как получить HWND ActiveX контроля? Спасибо.

Использование ActiveX - C++
Добавил элемент управления ActiveX на диалог, создал для него класс, он автоматом сгенерировался, вот его код #pragma once //...

Activex-компонент Spreadsheet - C++
Создал MDI-ое приложение. В каждом дочернем окне у меня создается компонент Spreadsheet (класс CSpreadsheet1). Этот ActiveX компонент...

ActiveX dll и ее использование - C++
Не могу понять в чем проблема. Создана dll в VB cde.dll, в которой есть форма Form1 и класс form_class, в классе реализована процедура ...

Удаление/замена ActiveX... - C++
Доброго времени суток! Есть ActiveX-компонент(в моем случае Flash ActiveX). Запущено одно или несколько приложений его...

Надо создать ActiveX control (+) - C++
Надо создать следующий ActiveX control: Внешне он представляет из себя таблицу с переменным кол-вом строк и фиксированным кол-вом...

ActiveX добавление страницы свойств - C++
Пытаюсь добавить свойства к элементу ActiveX. Создал класс страницы свойств, там сразу и диалог создается. А дальше в книге смутно описано...

ActiveX для просмотра PNG - C++
Подскажите, где можно взять ActiveX для просмотра PNG?

Внедрение элементов управления в ActiveX control - C++
Подскажите, как можно внедрить стандартный элемент управдения (например CEdit) в свой ActiveX control. Можно ли один ActiveX конкретно...

Как убрать из проекта ActiveX-компонент? - C++
Как полностью и корректно убрать из проекта ActiveX-компонент? Чтобы его иконки не было больше видно в панели Controls при проектировании...

Не могу разобраться с написанием ActiveX в ATL - C++
Вопрос ко всем знатокам COM и ATL и не только! Создал ActiveX control c с помощью мастера. Добавил Connection Point с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
28.12.2009, 21:41     Процесс регистрации элемента ActiveX #2
Не хотелось мне пускаться в пространные рассуждения по этому широко освещенному в прессе вопросу, но видимо придетя, раз уж все молчат.

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

На самом деле все очень просто, задача утилиты regsvr32 - загрузить динамическую библиотеку (не имеет значения, что расширение у файла ocx, под этим расширением скрываются более или менее известные всем внутренности файлов dll), следующий шаг выполняемый программой regsvr32 зависит от ключа /u, есил таковой был задан, то утилита старается найти и выполнить функцию DllUnregisterServer, иначе запускается на выполнение метод DllRegisterServer. Вся логика внесения и удаления данных из реестра осуществляется самой библиотекой. Если regsvr32 удалось найти соответствующую функцию и она выполнилась и код возврата соответствует константе S_OK, тогда regsvr32 с радостью сообщает нам об успешной регистрации компоненты, хотя таковой возможно и не произошло.

Что же должно быть прописано в реестре и удалено из последнего при регистрации и удалении это очень долгий разговор, там есть много тонкостей и ньюансов. И в принципе при использовании библиотек и современных инструментов для разработки ActiveX компонентов сейчас это знать совсем не обязательно. Они берут всю рутину этоо процесса на себя, если все же это очень очень интересно, то рекомендую почитать какую-нибудь книжку по программированию COM.

Для начала можно даже взглянуть вот на эту статейку
http://msdn.microsoft.com/library/en-us/mmc/mmc/registering_and_unregistering_a_snap_in.asp

Удачи, Владимир
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
29.12.2009, 11:06     Процесс регистрации элемента ActiveX #3
Что-то меня вчера развело, а на поставленные вопросы я так и не ответил. Приношу свои извинения и постораюсь исправится. Итак, исходя из всего выше сказанного:

1. Да, Ваше предположение на счет строки 'regsvr32 /u MyActiveX.ocx' абсолютно верное. Эта строка предполагает убрать данные о компоненте из реестра (ужас! как можно перевести слово unregister, кто нибудь знает?)

2. Автоматическую регистрацию библиотеки COM объектов (ActiveX control как вариант) можно сделать самостоятельно и без использования утилиты regsvr32, достаточно лишь вызвать функцию DllRegisterServer файла/библиотеки, содержащей соответствующе компоненты.

С уважением, Владимир
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru