Перерегистрация TLB в другую папку.

Обсуждение вопросов, касающихся указанной технологии.
Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Перерегистрация TLB в другую папку.

Сообщение Mikle » 13.01.2016 (Ср) 11:18

Чую, что я упускаю что-то элементарное... но всё же, ситуация:
Я опробовал dx9vb.tlb от The trick. TLB находилась в той же папке, что и демо проект.
Прошло время, той папки уже давно нет, а в списке ссылок VB6 всё ещё находится та TLB с несуществующим путём, попытка добавить новую ссылку в другую папку не срабатывает.
Как мне снова воспользоваться этой TLB? Вариант восстановления старого пути я прекрасно понимаю, но мне хотелось бы, чтобы TLB лежала в другой папке, для порядка.

The trick
Постоялец
Постоялец
 
Сообщения: 774
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Перерегистрация TLB в другую папку.

Сообщение The trick » 13.01.2016 (Ср) 12:01

Удали в реестре запись HKCR\TypeLib\{93E767C8-1E6B-46CC-B452-3531146574ED}
UA6527P

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Перерегистрация TLB в другую папку.

Сообщение Mikle » 13.01.2016 (Ср) 12:08

Это что, единственный легальный способ???
Regedit не находит такой строки, не находит даже просто "HKCR".

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Перерегистрация TLB в другую папку.

Сообщение alibek » 13.01.2016 (Ср) 12:14

Э... Это аббревиатура.
Полностью HKEY_CLASSES_ROOT.
Lasciate ogni speranza, voi ch'entrate.

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Перерегистрация TLB в другую папку.

Сообщение Vi » 13.01.2016 (Ср) 13:08

Mikle писал(а):Как мне снова воспользоваться этой TLB? Вариант восстановления старого пути я прекрасно понимаю, но мне хотелось бы, чтобы TLB лежала в другой папке, для порядка.

Есть такая утилита REGTLIB.EXE. Где взять? Не помню, потому что было давно: "REGTLIB.EXE 30720 14.07.00 23:00"
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Перерегистрация TLB в другую папку.

Сообщение Mikle » 13.01.2016 (Ср) 14:09

alibek писал(а):Э... Это аббревиатура.
Полностью HKEY_CLASSES_ROOT.

Да, спасибо, я уже запустил на поиск "93E767C8-1E6B-46CC-B452-3531146574ED", и понял, что это аббревиатура :)
Всё работает.
Vi писал(а):Есть такая утилита REGTLIB.EXE. Где взять? Не помню

Нашлась в папке "C:\WINDOWS\system32\URTTEMP"

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перерегистрация TLB в другую папку.

Сообщение Хакер » 13.01.2016 (Ср) 16:16

Mikle писал(а):Это что, единственный легальный способ???

Нет, легальный вот — UnRegisterTypeLib.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Перерегистрация TLB в другую папку.

Сообщение Mikle » 13.01.2016 (Ср) 16:44

Хакер писал(а):Нет, легальный вот

Это ещё веселее - чтобы отключить в IDE библиотеку, нужно писать программу :)
А ещё нужно знать GUID библиотеки, которой может быть уже нет в наличии.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перерегистрация TLB в другую папку.

Сообщение Хакер » 13.01.2016 (Ср) 19:09

Mikle писал(а):Это ещё веселее - чтобы отключить в IDE библиотеку, нужно писать программу :)

IDE тут не причём, поддержание списка зарегистрированных TLB — область ответственность системы, а не VB IDE.

Mikle писал(а):, нужно писать программу :)

Я говорю, что правильный каноничный способ убрать регистрацию TLB из системы перед физической ликвидацией файла — это вызов данной функции.

Так что я об этой функции написал не как о мере починить ситуацию. Но есть и мера починить ситуацию, совсем не отходя от кассы. Раз уж у тебя уже открыта IDE, и есть проблема, то в IDE есть Immediate Pane. Берёшь и пишешь в нём две строчки:
Код: Выделить всё
fn$ = "c:\stuff\123\new_tlb_location.tlb"
RegisterTypeLib LoadTypeLib(fn$), fn$, vbNullString


И всё, запись в реестре будет исправлена на новый путь. GUID библиотеки (правильное название — LIBID)знать не нужно. Разумеется, для этого в References нужно подключить описание функций RegisterTypeLib и LoadTypeLib — например библиотеку OLELIB от Edanmo.


Но вот что вызывает куда больший интерес, это поведение твоей IDE. В норме IDE не даёт полностью запустить проект с битой ссылкой на TLB. При этом в References проблемная TLB отображается с префиксом «MISSING: ». При этом всегда можно выбрать новое местоположение TLB и префикс «Missing:» пропадает, а IDE начинает использовать новый TLB-файл. По крайней мере до следующего запуска среды.
У тебя не так? Какая версия VB IDE у тебя? SP6 стоит?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Перерегистрация TLB в другую папку.

Сообщение Mikle » 13.01.2016 (Ср) 19:43

Хакер писал(а):Какая версия VB IDE у тебя? SP6 стоит?

Версию посмотрю завтра на работе.
На счёт SP6 опять же не уверен.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Перерегистрация TLB в другую папку.

Сообщение Mikle » 14.01.2016 (Чт) 11:49

Хакер писал(а):Какая версия VB IDE у тебя? SP6 стоит?

Version: 8176
VBA: Retail 6.0.8169
Это я то посмотрел?
SP6, на сколько помню, я тут не ставил, после обеда поставлю, проверю.

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Перерегистрация TLB в другую папку.

Сообщение bon818 » 15.01.2016 (Пт) 13:48

Утилита RegTlb
У вас нет доступа для просмотра вложений в этом сообщении.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перерегистрация TLB в другую папку.

Сообщение Хакер » 15.01.2016 (Пт) 13:53

bon818 писал(а):Утилита RegTlb


Писаке бы по рукам надавать...
Код: Выделить всё
.Flags = &H281004
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в OLE / COM / ActiveX

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

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

    TopList  
cron