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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
atos
0 / 0 / 0
Регистрация: 10.12.2009
Сообщений: 34
26.12.2009, 23:53     Процесс регистрации элемента ActiveX #1
Объясните пожалуйста процесс регистрации элемента 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
Посмотрите здесь:

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему? C++
ActiveX dll и ее использование C++
C++ HWND в ActiveX
C++ Удаление/замена ActiveX...
Activex-компонент Spreadsheet C++
C++ ActiveX
C++ Процесс А инициализирует массив случайными значениями и записывает их в файл, а затем запускает процесс Б
C++ Использование ActiveX

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
boombastik
6 / 6 / 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
6 / 6 / 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 файла/библиотеки, содержащей соответствующе компоненты.

С уважением, Владимир
Yandex
Объявления
29.12.2009, 11:06     Процесс регистрации элемента ActiveX
Ответ Создать тему
Опции темы

Текущее время: 15:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru