Реализация DCOM сервера

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Реализация DCOM сервера

Сообщение FaKk2 » 10.04.2005 (Вс) 9:51

Для начала попробую обьяснить проблему.
Мне нужно реализовать Idispatch:Invoke в программе. Т.е. сделать не клиента, а сервер, согласно следующей фразе:
MSDN писал(а):To gain this control, you need to implement your host's IDispatch so it handles DISPID_AMBIENT_DLCONTROL. When the WebBrowser Control is instantiated, it will call your IDispatch::Invoke with this ID.


Пока, я еще в поисках ответа, и может здешние шаманы подскажут направление ?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 10.04.2005 (Вс) 9:58

А в чём проблеиа?(интересно)

Я так понял, ты делаешь не на VB?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 10.04.2005 (Вс) 10:00

Таки на VB.
Проблема, что я понятия, пока, не имею как это сделать :D
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.04.2005 (Вс) 15:48

FAKK2, всё очень просто.
У нужного метода нужного объекта в Tools -> Procedure Attributes выставь DispID, равный DISPID_AMBIENT_DLCONTROL.
Сам IDispatch тебе реализовывать совершенно незачем.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.04.2005 (Вс) 16:51

Тёмыч, человеку нужно вот это вот.
Понятно, что метод надо определить у контейнера. Вопрос в том, каким образом, если контейнер у нас форма :)

Если просто написать
Код: Выделить всё
Public Function TellHim() As Variant
  TellHim = DLCTL_DLIMAGES Or DLCTL_VIDEOS Or DLCTL_NO_SCRIPTS
  MsgBox "!"
End Function
и присвоить этой функции нужный ID (-5512), то будет видно, что ни фига не вызывается.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.04.2005 (Пн) 4:56

Хост там - не контейнер (он же форма), а невидимый объект, создаваемый VB.
Нужно создавать свой хост, так же как в http://bbs.vbstreets.ru/viewtopic.php?t=9370
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.04.2005 (Пн) 5:13

Ну, собсно, эту мыслю я и хотел озвучить, но думал, мож ты знаешь чё другое :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 11.04.2005 (Пн) 6:40

Хочу выразить благодарность, GSerg'у и tyomitch'у, Я на вас надеялся :)

А теперь по делу,
Как я понял, мне нужно создать некий виртуальный обьект, который будет являться хостом, к которому будет обращаться webBrowser.

Пример создания хоста, я беру с исходника предоставленного tyomitch'ем.

Подключаю одно к другому способом описанным выше.

Такие вопросы:
1. У меня броузеры динамически создаются в софте, значит мне надо будет подключение делать для каждого? Если да, то в какой момент? Сразу после Load webbrowser(i)?

2. Пример tyomitch'а не запускается. Ругается на

Код: Выделить всё

Implements IOleInPlaceFrame

Bad interface for Implements: Interface is derived from another pure interface with non-restricted methods


Комментс?

Все библы подключены успешно.

Еще раз, спасибо за помощь.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.04.2005 (Вт) 17:44

FAKK2 писал(а):2. Пример tyomitch'а не запускается. Ругается на

Код: Выделить всё
Implements IOleInPlaceFrame

Bad interface for Implements: Interface is derived from another pure interface with non-restricted methods


Комментс?

Все библы подключены успешно.

1) olelib у тебя моя или родная от Edanmo? нужна моя.
2) VB6 или VB5? В VB5 чего-нибудь может и нехватать, я не проверял.
Изображение

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 12.04.2005 (Вт) 19:34

Заработало !

Сбила меня с толку то, что одна tlb была твоя, другая с WINDOWS\SYSTEM32. Вот вторую я и не заметил.
Щас буду разбираться.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 12.04.2005 (Вт) 19:39

Боюсь знаний не хватит. :cry:

Я купил по этому поводу книжку Дена Аппельмана "Developing Com/Activex Components With Visual Basic 6".
Кто нибудь её читал?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.04.2005 (Ср) 21:37

Я, я читал! Напечатал и читал!! :-)

Только у меня про VB5. А что?
Изображение

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 13.04.2005 (Ср) 22:11

tyomitch
Ну раз читал, она тебе помогла? :)
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.04.2005 (Чт) 16:21

Вообще? Да.
Применительно к сабжу - нет.

А книжку, конечно, прочитай, раз уже купил - интересная вещь.
Оттуда я узнал, например, ответ на вопрос из http://bbs.vbstreets.ru/viewtopic.php?t=10758 (который на форуме так и остался без ответа). Естественно, что никакой "перебор контролов на родителе" там не нужен.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.04.2005 (Чт) 17:18

tyomitch писал(а):ответ на вопрос из http://bbs.vbstreets.ru/viewtopic.php?t=10758 (который на форуме так и остался без ответа). Естественно, что никакой "перебор контролов на родителе" там не нужен.

"Развивайте, развивайте свою мысль, Афанасий Тарасович..." (c)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.04.2005 (Чт) 19:57

MSDN писал(а):OLE_OPTEXCLUSIVE
If you're developing a control with option-button functionality, use the OLE_OPTEXCLUSIVE data type for the Value property of your control. This will cause your control's Value property to behave like that of the intrinsic OptionButton control. That is, when instances of your control are grouped, and the user clicks an unselected control instance, the currently selected instance's Value is automatically set to 0 (thus unselecting the button), and the Value of the clicked instance is set to 1.

This behavior is handled by the container. The container checks the Value property for each control it contains, and groups those that are of type OLE_OPTEXCLUSIVE.

Note You must use the Procedure Attributes dialog box to make the Value property the default property, in order for the control host to enable the behavior described.

OLE_OPTEXCLUSIVE is handled as a Boolean type internally.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.04.2005 (Пт) 4:35

Гы... Во как :) Прикольно! :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

    TopList