Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.10.130] |
|
Сообщ.
#1
,
|
|
|
В связи с большим объемом вопросов по сабжу кладу 2 своих тьюториала по созданию простого COM-объекта с эвентами и приложения, которое его использует.
Все выполнялось в среде Visual Studio 2003, т.к. в 2005 я никогда этого не делал (и не собираюсь ), а VS 6 морально устарела. Тьюторы по-англицки, т.к. русским не владею Сорс код можете использовать как угодно, никаких ссылок на автора соблюдать не обязательно... |
Сообщ.
#2
,
|
|
|
Тьютор 1. Делаем COM-объект.
Прикреплённый файлCreating_ATL_Object_with_Events.zip (353.81 Кбайт, скачиваний: 2464) |
Сообщ.
#3
,
|
|
|
Тьютор 2. Делаем приложение - тестер
Прикреплённый файлUsing_ATL_Object_with_Events.zip (151.37 Кбайт, скачиваний: 2102) |
Сообщ.
#4
,
|
|
|
Сорс код
Прикреплённый файлMyAtlProject.zip (68.81 Кбайт, скачиваний: 2016) |
Сообщ.
#5
,
|
|
|
Uncle_Bob
вопрос 1. зачем создовать втарой интерфейс (_IMyAtlObjectEvents) если можно реализовать метод интерфайса(_IMyAtlObjectEvents) StringEnumrated() в интерфейсе IMyAtlObject. Вопрос 2. почему на клиентской стороне в функции кнопки (OnBnClickedButton1) вызовается метод интерфейса (IMyAtlObject.) EnumStrings() а потом в нем вызовается метог интерфейса (_IMyAtlObjectEvents) Fire_StringEnumrated() . нельзя было просто стазу в (OnBnClickedButton1) вызвать Fire_StringEnumrated() и все. P.S если где туплю сори:) |
Сообщ.
#6
,
|
|
|
knut, все это сделано только с целью демонстрации, как ипользовать диспатч интерфейс для генерации и ловли эвентов, никакой смысловой нагрузки в этом нет.
|
Сообщ.
#7
,
|
|
|
Можно ссылки обновить, архивы битые.
|
Сообщ.
#8
,
|
|
|
! Еще раз... Аттачи криво скачиваются в IE. Используйте Opera или Firefox! |
Сообщ.
#9
,
|
|
|
А как сделать нечто подобное, но для 2 exe приложений?
|
Сообщ.
#10
,
|
|
|
Как использовать COM-объект, если при его создании выбрали не DLL, а Service?
При попытке вызова CoCreateInstance в клиенте, приложение на несколько секунд подвисает и выдает ошибку "Ошибка при выполнении приложения сервера". |
Сообщ.
#11
,
|
|
|
О, да. С сервисом очень актуальный вопрос. Рядом тема есть даже.
|
Сообщ.
#12
,
|
|
|
Если вы создаёте компоненту с использованием ATL, то нужно выбирать правильный тип проекта:
см. в аттаче пример клиента и сервера-сервиса. Прикреплённый файлCOM_Sample.zip (44.33 Кбайт, скачиваний: 1543) |
Сообщ.
#13
,
|
|
|
А своими словами можете пояснить особенность отличий сервера как сервиса и как exe-приложения?
|
Сообщ.
#14
,
|
|
|
Обычно COM-сервер в виде сервиса реализуется в том случае, когда нужно чтобы код компоненты выполнялся в контексте определённого пользователя (того, от чьего имени запущен сервис) или если есть код, который должен быть активен всегда, вне зависимости от того есть ли активные пользователи компоненты или их нет.
|
Сообщ.
#15
,
|
|
|
Цитата Uncle_Bob @ Сорс код а можна глупый вопрос.... шо делает данная программа? вводится циферка, и начинают выводиться сообщения. как только дойдёт до указанной циферки пишет что что то выполнено поясните по подробнее, пожалуйста. |
Сообщ.
#16
,
|
|
|
Visual Studio 2003 на Window 7 не может компилировать, а вот 2005 может! Uncle_Bob, лучше сделать пример на 2005!!!
|
Сообщ.
#17
,
|
|
|
ага, где ж ее теперь найти
|
Сообщ.
#18
,
|
|
|
у меня есть
|