Как вызвать функцию из ActiveX Dll?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Как вызвать функцию из ActiveX Dll?

Сообщение JohnK » 24.03.2007 (Сб) 12:08

Как вызвать функцию из ActiveX Dll ? Этот код не возвращает адрес
GetDllInfo.

Код: Выделить всё
ret = LoadLibraryA(App.Path & "\Dll\" & plName)
If ret > 0 Then
   ProcAddr = GetProcAddress(ret, "GetDllInfo")
   If ProcAddr > 0 Then ValidDLL = True
   Call FreeLibrary(ret)
End If


Этот вариант
Код: Выделить всё
Set sdll = CreateObject(".mydll.Data")

не подходит, так как нужно зарегестрировать dll перед связыванием, а мне нужно проверить "моя" ли это dll или нет а потом уже регить.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

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

Сообщение GSerg » 24.03.2007 (Сб) 12:19

JohnK писал(а):Как вызвать функцию из ActiveX Dll ?

http://bbs.vbstreets.ru/viewtopic.php?p=6655394#6655394

JohnK писал(а):а мне нужно проверить

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

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 24.03.2007 (Сб) 13:16

Ссылка, к сожалентю, не помогла.
Я не хочу регить все dll подряд, что необходимо при использовании CreateObject. Поэтому чтобы не засорять систему, я хочу проверить это подходящая dll или нет, просто вызвав функцию, например GetDllInfo. Если хотя бы получу ее адрес, уже хорошо. Иначе это не подходящая библиотека.
Надеюсь смысл понятен.

Как я понимаю, с ActiveX это просто не выполнимо...

Какой еще может быть путь решения?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.03.2007 (Сб) 14:50

Делай в DLL какой-нибудь уникальный ресурс, его и проверяй.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 24.03.2007 (Сб) 18:39

JohnK
Где то на форуме выкладывался код по созданию объекта из DLL при отсутствии необходимости регистрации оной.
Изображение

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 25.03.2007 (Вс) 3:48

Не нашел... :(
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.03.2007 (Пн) 9:21

Лучший способ понять что-то самому — объяснить это другому.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 26.03.2007 (Пн) 21:55

А как отличить ActiveX dll от простой dll во время загрузки?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 26.03.2007 (Пн) 22:51

Например, наличием экспортируемой функции DllRegisterServer.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение tyomitch » 26.03.2007 (Пн) 23:51

Вот как раз её может и не быть. А DllGetClassObject обязана быть всегда.
Изображение


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

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

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

    TopList