Проблема с плагинами в VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MasterEugene
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 13.09.2003 (Сб) 18:38

Проблема с плагинами в VB

Сообщение MasterEugene » 15.09.2003 (Пн) 17:48

У меня вопрос: возможно ли из подключаемых и созданных мной библиотек (использую как плагины) вызывать функции главной программы (которая подключает плагин)?
Умоляю о помощи!

Vellan
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 06.05.2002 (Пн) 1:21
Откуда: Russia

Сообщение Vellan » 15.09.2003 (Пн) 19:13


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

Сообщение Sebas » 16.09.2003 (Вт) 9:49

Да
-если она является ActiveX
(можно использовать обратный вызов)
-можно определить события если они поддерживаются в главной программе
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

MasterEugene
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 13.09.2003 (Сб) 18:38

Re:

Сообщение MasterEugene » 17.09.2003 (Ср) 12:56

А вот с этого места по подробней. Т.е. если описать функцию в главном тексте программы, то можно из ActiveX вызвать эту ф-ю. Дело в том, что если создавать проект ActiveX в группе с проектом главной программы, то всё в порядке, а если программно подключить этот ActiveX, то уже оператор Call ничего не вызывает. Например если проект программы имеет название Game, а имя ф-ции - Play(), то в ActiveX нужно вызывать таким образом: "Game.Play()"? И какой тогда должна быть эта ф-я, Public?

MasterEugene
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 13.09.2003 (Сб) 18:38

Re: Sebas

Сообщение MasterEugene » 17.09.2003 (Ср) 12:59

И каким образом осуществляется обратный вызов?

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

Сообщение Sebas » 17.09.2003 (Ср) 19:24

У тебя в планине есть определённвй интерфейс(набор методов)
Главная программа создаёт объект плагина, ну там, определяет нужен ты ей или нет....
потом, она создаёт свой PublicNotCredable объект и отсылает его в твой объект.
Ты получаешь объект (ссылку) созданный в главной программе и через его методы управляешь главной программой
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

MasterEugene
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 13.09.2003 (Сб) 18:38

Re re re re....

Сообщение MasterEugene » 18.09.2003 (Чт) 9:30

Ага, спасибо преогромное!
Уточнить ещё хочу вот что.
1) Главная прога создаёт объект плагина. Это, если я не ошибаюсь, выглядит так:

Public Pluginz As Object
...
Set Pluginz = CreateObject("Plug1" & ".Data"), где Pluginz - объект, при том что Plug1.dll - имя файла плагина
(Теперь я могу например через команду Pluginz.Run вызвать функцию Run плагина Plug1)

2) Главная прога создаёт свой PublicNotCredable объект и отсылает его в объект. Вот тут (вы уж простите :))), я не понял. Как создаётся PublicNotCredable объект? И каким способом его отсылать в объект? (И в какой объект??:)))

3) "Ты получаешь объект (ссылку) созданный в главной программе и через его методы управляешь главной программой". Не поняв 2-го пункта, я уж здесь никак сам не догадаюсь :))

Заранее спасибо, офигевший от твоих знаний, Eugene.

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

Сообщение Sebas » 19.09.2003 (Пт) 10:41

--------------------------------------------------------------------------------

Ага, спасибо преогромное!
Уточнить ещё хочу вот что.
1) Главная прога создаёт объект плагина. Это, если я не ошибаюсь, выглядит так:

Public Pluginz As Object
нет!

Подключаем TypLib Info

Dim objTLA As TLIApplication
Dim objClass As TLI.CoClassInfo
Dim objTLI As TLI.TypeLibInfo

Dim MyObj as object 'объект плагина
Dim objAdmin as MyAdmin' объект в главной программе для управления ею


Set objTLA = New TLI.TLIApplication
Set objTLI = objTLA.TypeLibInfoFromFile("PlugInFile.DLL")
objTLI.Register 'регистрируем на всяк случай
For Each objClass In objTLI.CoClasses
'перебираем все объекты в плагине
Set MyObj= CreateObject(objTLI.Name & "." & objClass.Name)
objAdmin =New MyAdmin'
MyObj.SetCallBack objAdmin 'обязательный метод в твоём плагине для получения управления через объект objAdmin
'теперь программа управляет плагином через MyObj, а плагин программой через ObjAdmin
Next



Заранее спасибо, офигевший от твоих знаний, Eugene
или с математикой всё впорядке( ну... там сложение и умножение) можешь пересчить на колличество 0.5 будвайзеров :wink:
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

MasterEugene
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 13.09.2003 (Сб) 18:38

the last

Сообщение MasterEugene » 23.09.2003 (Вт) 16:25

Брат, и последнее :)
в строке Dim objAdmin as MyAdmin,
MyAdmin - это что и откуда???
Помоги плиз

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

Сообщение Sebas » 24.09.2003 (Ср) 17:59

это класс в главное проге с методами для управления главное программой.
Подчёркиваю,
главная прога должна быть ActiveX.EXE
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

MasterEugene
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 13.09.2003 (Сб) 18:38

Сообщение MasterEugene » 24.09.2003 (Ср) 20:49

Oooo блин. Главная прога должна быть Актив Икс... Это не хорошо. Скажи, а чем отличается обычный exe от ActiveX exe'шника? Нужно ли мне будет где-нибудь изменения вносить, если я переведу свой обычный экзешник в актив икс экзешник? Это на чём-нибудь скажется. Я так понимаю, что потом методами моей главной проги сможет пользоваться любой человек. Эх...
А если вынести необходимые для использования плагином методы главной программы в отдельный activeX dll, это поможет, как ты думаешь?

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

Сообщение Sebas » 25.09.2003 (Чт) 12:27

Oooo блин. Главная прога должна быть Актив Икс... Это не хорошо. Скажи, а чем отличается обычный exe от ActiveX exe'шника? Нужно ли мне будет где-нибудь изменения вносить, если я переведу свой обычный экзешник в актив икс экзешник?

Главное что б запуск был из процедуры Main

Это на чём-нибудь скажется. Я так понимаю, что потом методами моей главной проги сможет пользоваться любой человек. Эх...

Делай классы как PublicNotCredable - пока ты этот класс в проге не создашь никто к нему не подконнектиться..

А если вынести необходимые для использования плагином методы главной программы в отдельный activeX dll, это поможет, как ты думаешь?

почему бы нет.... тока опять встаёт проблема управления главной
программой, хотя нет, здесь уже можно использовать события. хотя да, они в такой схеме передаватьс не будут, разные контексты.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

MasterEugene
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 13.09.2003 (Сб) 18:38

Сообщение MasterEugene » 26.09.2003 (Пт) 16:12

Всё, спасибо! Спарвился. :D
Буду должен


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 7

    TopList