С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для drunkwolfs
10 / 10 / 6
Регистрация: 24.05.2013
Сообщений: 350

Создание COM-компонента

21.10.2015, 02:15. Показов 3798. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я только начал изучать что такое COM и фреймворки и у меня есть недопонимание. Прошу ответить возможно ли то что я описал ниже, а лучше сказать как чаще всего делают и как правильно делать. Я могу кое где быть слегка не прав или полностью, поэтому я могу сказать что, то что я описал может быть возможным, но могут быть инструменты\способы\подходы которые лучше подходят, использование которых - хороший тон.

Планирую в ближайшее время начать работать с ActiveX.(Не MFC)

Может ли COM-компонент быть в отдельной dll библиотеке?
Обязательно ли в такой COM-компонент вносить методы управления этим компонентом?

Правильно ли я понимаю: За основу управления COM-компонентами берется стандартный фреймворк(В моем случае ActiveX), который содержит методы для взаимодействиями между COM-компонентами.
Можно ли создать пустой исполняемый(exe) фреймворк?

Как происходит управление COM-компонентами?
Правильно ли я понимаю: Нужно дополнить этот пустой фреймворк вызовом хотя бы одной библиотеки\COM-компонента что бы пошла работа.

Где содержится логика взаимодействия между отдельными COM-компонентами? Как я понимаю изначально есть методы для взаимодействия между COM-компонентами. Но где то нужно прописать как они будут взаимодействовать между собой, что то типа функции main где производится начальная настройка, конфигурация и вызывается как минимум одна, главная библиотека\com-компонент.

Где лучше располагать логику взаимодействия между отдельными COM-компонентами? В исполняемом файле, пустом фреймворке дополнив его в отдельном COM-компоненте?

Может ли быть децентрализованное управление COM-компонентами? Чтобы в разные моменты времени разные COM-компоненты управляли другими COM-компонентами. Может ли отсутствовать самый главный COM-компонент?

Мне бы хорошую статью или урок разъясняющий что такое COM с примерами использования и советами, желательно содержащий аналогии. на русском.
Что то типа самоучителя для чайников.

Добавлено через 5 минут
Как мне создать COM-компонент отдельным не исполняемым файлом в Visual Studio 2012? Какой проект выбирать? ATL? Какое расширение у COM-компонента? dll?
для создания исполняемого файл содержащего фреймворк тоже выбирать проект ATL?
Могут ли COM-компоненты сразу быть вшиты в исполняемый файл? Как лучше? хранить их отдельно?

Добавлено через 43 минуты
Чем ActiveX от .NET отличается?
Мне кажется .NET более современная замена ActiveX.
ActiveX я могу описать как фреймворк, отвечающий за их взаимодействие между собой отдельных компонентов стандарт для которых - COM.
.NET могу описать также как ActiveX, где вместо VBA для взаимодействия с компонентами используется C# и где все более ориентировано на написание компонентов, чем на их взаимодействие.

Добавлено через 7 минут
то есть .NET включает в себя создание и управление компонентами(на шарпе). А ActiveX только управление(взаимодействие).
Верно ли?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2015, 02:15
Ответы с готовыми решениями:

Создание компонента, при добавлении автоматически получить Parent фокусированного компонента
Привет всем, вот ни разу не писал еще компоненты, начал разбираться, все просто, понятно, доступно, удобно.. но как мне задать Parent...

Создание визуального компонента наследника базового компонента
Добрый день! В VS 2005 было возможно создать элемент Windows Forms control library на базе стандартного элемента, скажем Button. Я...

Создание своего компонента на основе компонента Timer
нужно создать свой компонент какбы который наследует компонент Таймер нужно хотя бы добавить несколько свойств помогите с идеей !!!!...

3
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
21.10.2015, 10:44
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Может ли COM-компонент быть в отдельной dll библиотеке?
да. хотя сама формулировка несколько странная... а вы "не отдельную" DLL встречали)?
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Обязательно ли в такой COM-компонент вносить методы управления этим компонентом?
если под методами управления DLL содержащей COM подразумевать наличие экспортируемых функций DllGetClassObject/DllCanUnloadNow/DllRegisterServer/DllUnregisterServer/DllEntryPoint, то, как вы сами понимаете, если этих методов нет система не сможет поднять объект сидящий в этой библиотеке. можно конечно загрузить НЕЧТО сидящее в этой библиотеке самому и самому же его поддерживать, но это почти не имеет отношения к COM
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Правильно ли я понимаю: За основу управления COM-компонентами берется стандартный фреймворк(В моем случае ActiveX), который содержит методы для взаимодействиями между COM-компонентами.
что значит "управления"? есть объект некого класса. он живет в неком месте (DLL или EXE). он предоставляет некие интерфейсы. в плане технологии - на этом все. если речь идет о том как написать такой объект, то разные среды предоставляют для этого разные возможности вплоть до полностью ручного написания.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Можно ли создать пустой исполняемый(exe) фреймворк?
можно самому написать объект с нуля без всяких ATL и т.п.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Как происходит управление COM-компонентами?
опять термин "управление". объектами никто не управляет. точнее - ими управляет тот кому это нужно: система знает какие методы она должна вызвать что бы создать объект и получить нужный интерфейс. инициатором работы системы с объектом служит пользовательский вызов (например, создание объекта в своей программе через вызов CoCreateInstance - система через реестр найдет место хранения объекта, произведет запуск EXE или загрузку DLL и вызовы методов создающих объект и получающих интерфейс). после этого прикладная программа сама будет делать с объектом то что ей нужно вызывая методы его интерфейса. если эта программа использует объекты как свои расширения и требует от этих объектов наличия специфических интерфейсов, то, наверное, можно сказать что "управлять" объектом будет программа.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Правильно ли я понимаю: Нужно дополнить этот пустой фреймворк вызовом хотя бы одной библиотеки\COM-компонента что бы пошла работа.
ничего не понял. что бы пошла работа нужно работать) если вам нужен объект - создайте его. если не нужен - зачем шуршать?
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Где содержится логика взаимодействия между отдельными COM-компонентами?
очевидно, что если они взаимодействуют эта логика будет там где они взаимодействуют (скорее всего в программе). если объекты используют друг друга - очевидно что логика будет там где идет такое использование. ну и подводя итог - эта логика в хелпе к этим объектам - там уж наверняка опишут какой объект какому нужен и что с ним делает и что можно сделать со всем этим из внешнего мира
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Как я понимаю изначально есть методы для взаимодействия между COM-компонентами.
изначально нет. однако, есть некоторые интерфейсы, например, обратного вызова которые позволяют делать некие вещи которые можно назвать чем то вроде взаимодействия если это нужно по логике работы. но это чисто лично ваша инициатива. объекту и так хорошо.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Но где то нужно прописать как они будут взаимодействовать между собой, что то типа функции main где производится начальная настройка, конфигурация и вызывается как минимум одна, главная библиотека\com-компонент.
без примера понять этот вопрос невозможно. дайте пример. взаимодействие идет там где оно идет. если я использую какой то объект получая от него какие то данные и хочу передать эти данные в другой объект очевидно я напишу код программы так что в нем будут строки обращения к одному а потом к другому объекту. наверное, это означает что взаимодействие будет в моей программе
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Где лучше располагать логику взаимодействия между отдельными COM-компонентами? В исполняемом файле, пустом фреймворке дополнив его в отдельном COM-компоненте?
вы используете терминологию которую не может понять мой мозг. я пытаюсь вам объяснить но с каждым разом думаю что вы всетаки хотите сказать не то что я вам объясняю поэтому это я комментировать не буду.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Может ли быть децентрализованное управление COM-компонентами? Чтобы в разные моменты времени разные COM-компоненты управляли другими COM-компонентами. Может ли отсутствовать самый главный COM-компонент?
никаких главных объектов нет если это не подразумевает ваша программа. объектам все равно. они не страдают манией величия. если в вашей программе например есть объект взаимодействующий с базой данных и объект получающий данные с устройства и вы хотите брать эти данные и класть в базу - кто тут главный? нет его. а теперь вы еще написали объект который как раз и перекладывает данные. вы его создали, создали те два объекта, подали их этому объекту, дунули плюнули и поехало. кто главный? этот третий? нет. главный - автор программы)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Мне бы хорошую статью или урок разъясняющий что такое COM с примерами использования и советами, желательно содержащий аналогии. на русском.
Что то типа самоучителя для чайников.
тут (не забудьте указать верную кодировку)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Как мне создать COM-компонент отдельным не исполняемым файлом в Visual Studio 2012?
как минимум - как обычную DLL так как по вопросу - вы не хотите создавать EXE. а вообще - там могут быть какие то свои шаблоны проекта чисто под это дело. я всегда руками создавал.
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Какой проект выбирать? ATL? Какое расширение у COM-компонента? dll?
какой нравится) я руками делал. расширение - по вопросу будет DLL наверное)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
для создания исполняемого файл содержащего фреймворк тоже выбирать проект ATL?
я не знаю что такое фреймоврк у вас)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Могут ли COM-компоненты сразу быть вшиты в исполняемый файл? Как лучше? хранить их отдельно?
можно сделать объект который будет жить в EXE. лучше тот способ который подходит вашей задаче. объекты живущие в DLL они ммм... вроде не могут быть глобальными - ну что бы вы в одной программе сделали вызов, а другая увидела ее результата - DLL то у каждой отдельная будет, своя. а EXE - он глобальный
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Чем ActiveX от .NET отличается?
очевидно тем что первое это очередное маркетинговое название некого подраздела COM а второе это че это.. платформа)? имитация кроссплатформы.. "наш" ответ яве)
Цитата Сообщение от drunkwolfs Посмотреть сообщение
Мне кажется .NET более современная замена ActiveX.
мне кажется не нужно было им столько делать всего. могли бы на COM успокоится - там все есть
Цитата Сообщение от drunkwolfs Посмотреть сообщение
ActiveX я могу описать как фреймворк, отвечающий за их взаимодействие между собой отдельных компонентов стандарт для которых - COM.
.NET могу описать также как ActiveX, где вместо VBA для взаимодействия с компонентами используется C# и где все более ориентировано на написание компонентов, чем на их взаимодействие.
я не знаю что вы делаете. я не понимаю ваших терминов
Цитата Сообщение от drunkwolfs Посмотреть сообщение
то есть .NET включает в себя создание и управление компонентами(на шарпе). А ActiveX только управление(взаимодействие).
Верно ли?
дот нет это платформа. то что они запихали в нее возможность создания COM-объектов не делает эту ВЕЩЬ матерью всех COM. ActiveX это маркетинг какого то подраздела COM.
3
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
23.10.2015, 17:53
Цитата Сообщение от drunkwolfs Посмотреть сообщение
статью или урок разъясняющий что такое COM с примерами
Введение в COM - в частности, примеры кода в части 4 и 5 ( с использованием и без использования ATL ).

Добавлено через 12 минут
1) Основы СОМ Дейл Роджерсон; 2) Искуство программирования. А Коберниченко

Добавлено через 47 минут

Не по теме:

Цитата Сообщение от vxg Посмотреть сообщение
должна вызвать чтобы создать
слитно или раздельно

1
26.10.2015, 09:35

Не по теме:

Цитата Сообщение от Alex5 Посмотреть сообщение
слитно или раздельно
vs
Цитата Сообщение от Alex5 Посмотреть сообщение
в частности, примеры кода в части 4 и 5 ( с использованием и без использования ATL )
1 повторение однокоренных слов в смежных предложениях или в одном предложении - плохой стиль
2 после скобок пробел не ставится
дальше о русском языке дискутируем)?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2015, 09:35
Помогаю со студенческими работами здесь

Экспорт компонента из DLL, создание компонента в DLL
MYAPI подчеркнута с надписью "linkage specification is not allowed" #ifndef _ANIMAL_H_ #define _ANIMAL_H_ #ifdef __cplusplus ...

Создание компонента
Помогите написать delphi 7 компонент, автоматически включающаяся кнопка, по истечению времени, отсчет времени должно отображаться на...

Создание компонента
У нас есть компоненты, для которого нам важно, что бы оно обновлялся только в случаях изменения props.status или изменения props.accounts....

Создание компонента
Создать компонет-панель с возможностью активизации вариантов (используются флажки, радиокнопки) как такое можно сделать помогите

создание компонента
Помогите написать delphi 7 компонент, автоматически включающаяся кнопка, по истечению времени, отсчет времени должно отображаться на...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru