Динамическое подключение DLL?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Динамическое подключение DLL?

Сообщение Dzhon » 25.12.2004 (Сб) 9:18

Доброго времени суток!
Излагаю суть вопроса:
Есть у меня клиент, и соответственно расширяя его функционал иногда добавляются пункты меню, откуда (из пунктов меню) происходит вызов ActiveXDLL написаных мною - же. Сейчас мне приходится делать ссылку через References и после добавления вызова перекомпилить моего клиента.
Вопрос:
Возможно-ли произвести вызов известной мне ActiveX Dll из кода, не добавляя предварительно ссылку в проект!

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

Сообщение tyomitch » 25.12.2004 (Сб) 9:21

Можно. Функция CreateObject поможет.
Изображение

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 25.12.2004 (Сб) 19:40

tyomitch писал(а):Можно. Функция CreateObject поможет.

В этом случае мне нужно в клиенте создать пункт меню и написать код для этого пункта (или я не прав?), а значит опять перекомпил клиента. Все дело в том что пункт меню я хотел-бы создавать при загрузке клиента (знаю как сделать) и назначить ему вызов моего Dll (не знаю как сделать) :cry:
З.Ы. Кодом если можно плз. (но и от теории не откажусь) :!:

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

Сообщение tyomitch » 25.12.2004 (Сб) 19:51

Теория: хранишь в реестре/инишке/ДБ/на сервере ;-) список подключенных компонентов.
При запуске проги загружаешь его в массив, скажем, Extensions
Имеешь массив меню, скажем, mnuExtensions(). Загружаешь в нём столько элементов, сколько подключено компонентов.
Пишешь:
Код: Выделить всё
Private Sub mnuExtensions_Click(Index As Integer)
CreateObject(Extensions(Index)).DoMyAction
End Sub

Все подключаемые компоненты, ессно, должны иметь метод DoMyAction.

Ещё что-нибудь пояснить? ;-)
Изображение

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 25.12.2004 (Сб) 20:06

Да, если можно?!
В каком виде хранить список подключенных (или подключаемых!!!!) компонентов. Ну например есть у меня Pay.dll, в каком виде хранить ссылку на него в массиве :?:

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 25.12.2004 (Сб) 20:17

Полагаю, в том, который тебе будет наиболее удобен для использования в CreateObject() - полный путь к файлу. Я бы еще предусмотрел какое-нить описание, ну, чтобы не выводить в меню имя файла библиотеки :) . Для этого, соотв-но, предусмотреть стандартный метод - GetInfo() какой-нибудь.
И не в массиве, а в коллекции - там поиск по ключу быстрее.

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

Сообщение tyomitch » 25.12.2004 (Сб) 20:37

Ennor, у меня поиск только по индексу, и коллекция ни к чему...

Вместо полного пути к файлу лучше указывать имя класса (типа "MyProject.MyExtension"), тогда длл-ку можно будет таскать по диску без перерегистрации в программе.
Изображение

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 25.12.2004 (Сб) 21:13

Пошел обрабатывать полученную информацию :!: :drunken:


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

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

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

    TopList