
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.75] |
![]() |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
![]() |
|
|
В связи с большим объемом вопросов по сабжу кладу 2 своих тьюториала по созданию простого COM-объекта с эвентами и приложения, которое его использует.
Все выполнялось в среде Visual Studio 2003, т.к. в 2005 я никогда этого не делал (и не собираюсь ![]() Тьюторы по-англицки, т.к. русским не владею ![]() Сорс код можете использовать как угодно, никаких ссылок на автора соблюдать не обязательно... |
Сообщ.
#2
,
|
|
|
Тьютор 1. Делаем COM-объект.
Прикреплённый файл ![]() |
Сообщ.
#3
,
|
|
|
Тьютор 2. Делаем приложение - тестер
Прикреплённый файл ![]() |
Сообщ.
#4
,
|
|
|
Сорс код
Прикреплённый файл ![]() |
Сообщ.
#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, то нужно выбирать правильный тип проекта:
![]() см. в аттаче пример клиента и сервера-сервиса. Прикреплённый файл ![]() |
Сообщ.
#13
,
|
|
|
А своими словами можете пояснить особенность отличий сервера как сервиса и как exe-приложения?
|
Сообщ.
#14
,
|
|
|
Обычно COM-сервер в виде сервиса реализуется в том случае, когда нужно чтобы код компоненты выполнялся в контексте определённого пользователя (того, от чьего имени запущен сервис) или если есть код, который должен быть активен всегда, вне зависимости от того есть ли активные пользователи компоненты или их нет.
|
Сообщ.
#15
,
|
|
|
Цитата Uncle_Bob @ Сорс код а можна глупый вопрос.... ![]() ![]() |