Проверка OCXксов?!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
LexBondAgent007
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 10.05.2005 (Вт) 16:11
Откуда: Россия - Москва - ЦАО

Проверка OCXксов?!

Сообщение LexBondAgent007 » 23.09.2005 (Пт) 20:24

Прив всем! Вот интересный вопрос назрел:

Допустим библиотека VBVM на компьютере есть (ну чтобы exe пахал)... Но вот EXE не будет выполняться, если нету какого то из компонентов..... Теперь вопрос: как можно сделать проверку ОСХ... допустим: если нету компонента msdxm.ocx - то вместо сообщения об ошибки появлялось сообщение вроде: "Windows media player не установлен. Хотите перейти на сайт и скачать его?" Ну и так далее...

p.s. Прошу не советовать пихать все осхсы в инсталлятор - все = все не предусмотришь... Ну и прочие мелочи =) :roll:

Выручайте, кодеры! =)

Правка: я так полагаю все это прописывается в sub_main (если это вообще возможно)
Это не читайте! Это спам! :D

ZORRO
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 22.08.2005 (Пн) 2:45
Откуда: Комсомольск-на-Амуре

Сообщение ZORRO » 24.09.2005 (Сб) 14:28

В событии формы Form_Initialize() проверяешь наличие физически библиотеки, если нет-копируешь и регистрируешь, если есть всё ок наверно :)

LexBondAgent007
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 10.05.2005 (Вт) 16:11
Откуда: Россия - Москва - ЦАО

Сообщение LexBondAgent007 » 25.09.2005 (Вс) 17:40

как ее проверять то? всмысле код..
Это не читайте! Это спам! :D

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 26.09.2005 (Пн) 7:25

dir ?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

LexBondAgent007
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 10.05.2005 (Вт) 16:11
Откуда: Россия - Москва - ЦАО

Сообщение LexBondAgent007 » 26.09.2005 (Пн) 8:12

Эт что получается так надо еще путь прописывать?! А если компонент зарегистрирован в D:\Blah\abc\vio\nu\gro\alpha\com.ocx - на чужом компе - то как я узнаю его путь чтобы проверить??! Нееее... ну а что больше способов нет чтоли?! :?:
Это не читайте! Это спам! :D

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 26.09.2005 (Пн) 8:31

LexBondAgent007 писал(а):Эт что получается так надо еще путь прописывать?! А если компонент зарегистрирован в D:\Blah\abc\vio\nu\gro\alpha\com.ocx - на чужом компе - то как я узнаю его путь чтобы проверить??! Нееее... ну а что больше способов нет чтоли?! :?:


Можно примерно так:

Код: Выделить всё
If tlb Is Nothing Then Set tlb = CreateObject("TLI.TypeLibInfo")
    tlb.LoadRegTypeLib sGUID, -1, -1, -1
    If Err.Number = 0 Then
        sDFile = tlb.ContainingFile
        bCopy = (sGUID <> tlb.GUID)
        If Not bCopy Then bCopy = Not CompVersions(sVersion, _
            tlb.MinorVersion & "." & tlb.MajorVersion & "." & tlb.LCID, sSFile)
....
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение Antonariy » 26.09.2005 (Пн) 13:47

Код: Выделить всё
On Error Resume Next
tlb = CreateObject("TLI.TypeLibInfo")
If Err.Number = 0 Then

Это будет работать для позднего связывания, но если ты какие-то компоненты добавил в референсы, то, при их отсутствии, прога не запустится вообще.
Лучший способ понять что-то самому — объяснить это другому.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 26.09.2005 (Пн) 13:55

Antonariy писал(а):
Код: Выделить всё
On Error Resume Next
tlb = CreateObject("TLI.TypeLibInfo")
If Err.Number = 0 Then

Это будет работать для позднего связывания, но если ты какие-то компоненты добавил в референсы, то, при их отсутствии, прога не запустится вообще.


Вообще-то ты совсем не понял - это кусок кода, при помощи которого проверяется существование компонента с указанным GUID-ом. Далее я получаю имя его файла и считываю/сравниваю его вресию и пр.

А делается все это с помощью TLBINF32.DLL, объявление которой ты и заметил...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение Antonariy » 26.09.2005 (Пн) 14:00

Не важно. Если при CreateObject произошла ошибка, этот компонент не зарегистрирован.
Лучший способ понять что-то самому — объяснить это другому.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 26.09.2005 (Пн) 14:07

Antonariy писал(а):Не важно. Если при CreateObject произошла ошибка, этот компонент не зарегистрирован.


Я вообще-то еще и версию проверяю... И обновляю, в случае необходимости...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

LexBondAgent007
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 10.05.2005 (Вт) 16:11
Откуда: Россия - Москва - ЦАО

Сообщение LexBondAgent007 » 26.09.2005 (Пн) 16:22

Я ничего не понял.... а примерчик можно плииииииз? У меня например этот код вообще не работает - и какое отношение TLI имеет к компонентам? А если допустим компонентов 3?! :?
Это не читайте! Это спам! :D


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

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

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

    TopList