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 стоит?