Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
1390 / 847 / 92
Регистрация: 08.02.2017
Сообщений: 3,613
Записей в блоге: 2

Как сделать TLB

30.06.2023, 20:11. Показов 4111. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все говорят об этих волшебных штуках, о том, какие возможности и удобства.., но никто ни говорит, как их делать. Видел статью как это делается с помощью специальной проги на Delfi, можно ли ее использовать для VB?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.06.2023, 20:11
Ответы с готовыми решениями:

Как правильно зарегистрировать TLB ?
Пытаюсь заставить работать Code Help Add-in. В readme сказано: Регистрирую, используя regasm (из состава сборки FrameWork...

*.tlb файлы - как их делать и как они работают ????
Дело в том что имеется куча плезных *.tlb файлов - а вот как их сделать самостоятельно - еслия хочу чего то там добавить в них .... ???

Как правильно подключать Reference библиотеки TLB и ActivX DLL
У меня вопрос вполне простой. Когда я нажимаю Ctrl+T и пытаюсь подключить свою библиотеку, то выскакивает ошибка и это невозможно. Долго...

34
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
30.06.2023, 20:14
Я занимался этим вопросом уже. Ты в моих темах раньше не видел разве? По моему что-то такое уже мелькало и не раз... Но вообще, по сути, я не умею их создавать с нуля. Я беру любую чужую и переделываю под себя и всё.
1
1390 / 847 / 92
Регистрация: 08.02.2017
Сообщений: 3,613
Записей в блоге: 2
30.06.2023, 20:25  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Я беру любую чужую и переделываю под себя и всё.
Очень подходящий вариант, мне бы один примерчик и как его закомпилировать..
0
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
30.06.2023, 20:56
Итак, немного расскажу про создание TLB для VB6. Эта тема уже много где была раньше в Интернете, но, всё равно, не совсем понятно описывалось для новичков! Я когда лично сам искал для себя по этой теме, то не особо всё понимал.

Итак, первое что нужно это файл который мы будем компилировать и сам компилятор. Файлы для будущего создания TLB бывают двух типов:

1. ODL-файлы
2. IDL-файлы

В зависимости от типа будет разный компилятор. Мне лично нравится больше ODL так как компилятор мне нравится больше где можно выбрать в диалоговом окне путь к файлу. В IDL мне не нравится этот сишный компилятор тем, что там всё через командную строку только с кучей разных параметров - замучаешься. Не просто короче...

Для ODL-файлов используется компилятор MKTYPLIB.EXE. Для начала найди у себя на компьютере этот файл. Если он у тебя есть то тогда ты сможешь создавать TLB. И тогда я продолжу тебя инструктировать.

Добавлено через 26 минут
testuser2, ты нашёл у себя на компьютере MKTYPLIB.EXE? Если нет качай из Интернета!
1
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
30.06.2023, 22:35
А для чего tlb? vb6 так-то сам умеет их делать тоже.
1
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 00:34
Цитата Сообщение от The trick Посмотреть сообщение
vb6 так-то сам умеет их делать тоже
О, привет! Я думал ты занят ремонтом. Ну честно, первый раз слышу, что VB6 умеет делать TLB.

Добавлено через 7 минут
The trick, я знаю ты любишь больше сишный компилятор и больше любишь IDL но это больше для продвинутых пользователей. Прощу всего это именно ODL и MKTYPLIB.EXE
0
1390 / 847 / 92
Регистрация: 08.02.2017
Сообщений: 3,613
Записей в блоге: 2
01.07.2023, 09:07  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
А для чего tlb?
Чтоб проверить "все" возможности создания потоков в VBA
Цитата Сообщение от The trick Посмотреть сообщение
vb6 так-то сам умеет их делать тоже.
Видел, про это, даже код где-то взял, но не пойму как им пользоваться
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
'mMain.bas из проекта CreateTypeLib.vbp
Option Explicit
 
Private Declare Function CreateTypeLib Lib "oleaut32" (ByVal StrSrc As Long, ByVal path As Long, a As Any) As Long
Private Declare Function CoCreateGuid Lib "ole32" (IID_TYPELIB As Any) As Long
Private Declare Function IIDFromString Lib "ole32" (ByVal pstCls As Long, clsid As UUID) As Long
 
Private Const IID_IDispatch As String = "{00020400-0000-0000-C000-000000000046}"
 
Sub Main()
    Dim hRef As Long
    Dim TypeLib As ICreateTypeLib
    Dim TypeInfo As ICreateTypeInfo
    Dim ComTypeInfo As ICreateTypeInfo
 
    Dim ptlibStdOle As ITypeLib
    Dim ptinfoIDispatch As ITypeInfo
    
    Dim IID_TYPELIB As UUID
    Dim IID_TYPEINFO As UUID
    Dim IID_DISPATCH As UUID
    
    Dim oFunc As FUNCDESC
    Dim oElement As ELEMDESC
    
    CoCreateGuid IID_TYPELIB
    CoCreateGuid IID_TYPEINFO
 
    CreateTypeLib SYS_WIN32, StrPtr("c:\a.tlb"), TypeLib
    
    With TypeLib
        .SetName "testlib"
        .SetVersion 1, 0
        .SetDocString "My Tlb"
        .SetGuid IID_TYPELIB
        .CreateTypeInfo "TestCCom", TKIND_COCLASS, ComTypeInfo
        .CreateTypeInfo "testInterface", TKIND_INTERFACE, TypeInfo
    End With
    
    With oElement
        .tdesc.vt = VT_BSTR
        .idlddesc.dwReserved = vbNull
        .idlddesc.wIDLFlags = IDLFLAG_FIN
    End With
    With oFunc
        .memid = 0
        .callconv = CC_STDCALL
        .FUNCKIND = FUNC_PUREVIRTUAL
        .invkind = INVOKE_FUNC
        .oVft = 0
        .lprgELEMDESCParam = VarPtr(oElement)
        .cParams = 1
        .cParamsOpt = 0
        .elemdescFunc.tdesc.vt = VT_HRESULT
    End With
    
    Set ptlibStdOle = LoadTypeLib("C:\Windows\SysWOW64\stdole32.tlb")
    IIDFromString StrPtr(IID_IDispatch), IID_DISPATCH
    Set ptinfoIDispatch = ptlibStdOle.GetTypeInfoOfIID(IID_DISPATCH)
    With TypeInfo
        '.SetImplTypeFlags(0, IMPLTYPEFLAG_FDEFAULT or IMPLTYPEFLAG_FSOURCE)
        .AddRefTypeInfo ptinfoIDispatch, hRef
        .AddImplType 0, hRef
        .AddFuncDesc 0, oFunc
        Dim s(1) As String
        s(0) = "testFunc"
        s(1) = "s"
        .SetFuncAndParamNames 0, s(0), 2
        .SetGuid IID_TYPEINFO
        .SetDocString "myInterface"
        .LayOut
    End With
 
    With ComTypeInfo
        '.AddRefTypeInfo TypeInfo, hRef   'can not run through
        '.AddImplType 0, hRef
        .SetTypeFlags (TYPEFLAG_FCANCREATE)
        .LayOut
    End With
    TypeLib.SaveAllChanges
    MsgBox "tlb create ok!", , ""
End Sub
Добавлено через 4 часа 2 минуты
Цитата Сообщение от HackerVlad Посмотреть сообщение
ты нашёл у себя на компьютере MKTYPLIB.EXE?
Есть такой в папке VB, актуальная версия за 98 г. )
0
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 12:11
Цитата Сообщение от testuser2 Посмотреть сообщение
Есть такой в папке VB, актуальная версия за 98 г
Ну так это то что надо!
0
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 12:17
Лучший ответ Сообщение было отмечено testuser2 как решение

Решение

Ну дальше всё просто! Качаешь любой файл ODL из интеренета и всё. И переделываешь его под себя и перекомпилируешь и всё. Вот можешь взять мою библиотеку (я её тоже переделывал) и засовывал туда свои функции.
Вложения
Тип файла: zip VbShlwHelper.zip (2.8 Кб, 38 просмотров)
1
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 12:26
Для просмотра GUID и для регистрации библиотек советую скачать утилиту vbRegTLB: Готовые решения и полезные коды на Visual Basic 6.0
0
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 12:34
И ещё советую для Lister'а Total Commander'а поставить плагин под названием TybeLib Info
Тогда легко можно будет просматривать TLB файлы и декомпилировать их, вот смотри скрин как у меня
Миниатюры
Как сделать TLB  
1
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 12:36
В любом случае надо будет списывать UUID и версию тоже очень важно.
0
1390 / 847 / 92
Регистрация: 08.02.2017
Сообщений: 3,613
Записей в блоге: 2
01.07.2023, 12:58  [ТС]
HackerVlad, Спасибо, нюансов не мало конечно! Разобрался с запуском, есть моменты, MKTYPLIB.EXE есть в папках VB6, но в начале затребовал библиотеку MSPDB60.DLL, которая также есть в другом каталоге VB. Закинул (хардлинком) ее в папку с MKTYPLIB.EXE и в System32, но заработало только после того, как поставил совместимость с Winows XP. Такой вопрос, при компиляции проги она не встраивается в ресурс, только как отдельный файл?
0
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 13:26
В любом случае надо будет списывать UUID и версию тоже очень важно.
Цитата Сообщение от testuser2 Посмотреть сообщение
при компиляции проги она не встраивается в ресурс
Вообще не понял вопроса

Добавлено через 1 минуту
Цитата Сообщение от testuser2 Посмотреть сообщение
но заработало только после того, как поставил совместимость с Winows XP
У меня в семёрке работает без всяких совместимостей, и не ругается вообще на отсутствие каких-либо компонентов и/или DLL.

Добавлено через 11 минут
какой ещё ресурс...

Добавлено через 1 минуту
какой ещё ресурс...
Цитата Сообщение от testuser2 Посмотреть сообщение
хардлинком
что такое хардлинк? я такого слова не знаю
0
1390 / 847 / 92
Регистрация: 08.02.2017
Сообщений: 3,613
Записей в блоге: 2
01.07.2023, 14:53  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
что такое хардлинк?
Хардлинк или "жесткая ссылка" на файл, это ссылка которая воспринимается прогами непосредственно как сам файл (на низком уровне). Фактичски это равноправная ссылка в ntfs на тот же участок на жестком диске. Если сдеать несколько хардлинков на один файл, то все ссылки автоматически становятся равноправными и файл нельзя будет удалить полностью, пока существует одна из ссылок. Есть похожий вид ссылок для папок - junction (точки монтирования). И то и другое стандартно поддерживается в Windows, но удобнее использовать Link Shell Extension.
Вообще хардлинки, не всега работают как хотелось, бы зависит от программы. Excel например, при открытии хардлинка, перезаписывает его при сохранении и отвязывает от другого местоположения.

Добавлено через 1 минуту
В ОЗУ, получается, прототип хардлинков - указатели переменных.

Добавлено через 29 минут
Джунки для папок, тоже удобная вещь, надо допустим, прогу перетащить на другой диск/раздел , место освободить, - папку с программой перемещаешь, а на прежнее место с нового места делаешь джунк (Junction). Прога воспринимает джунк, как полноценную папку. Не раз это пригождалось.
0
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 20:19
Цитата Сообщение от testuser2 Посмотреть сообщение
Такой вопрос, при компиляции проги она не встраивается в ресурс, только как отдельный файл?
Какую именно компиляцию ты тут имеешь ввиду? Компиляцию TLB? Что за ресурс ты имеешь ввиду? У TLB нет ресурсов. Я вообще не понял этого вопроса. Это просто жесть, честно, просто ноль понимания...
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
01.07.2023, 21:14
Лучший ответ Сообщение было отмечено testuser2 как решение

Решение

Цитата Сообщение от testuser2 Посмотреть сообщение
Видел, про это, даже код где-то взял, но не пойму как им пользоваться
Нет, я про другое. Создаешь публичный проект (ActiveX Dll/Exe) создаешь нужные типы/классы и выставляешь галочку Remote Server Files.
1
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
02.07.2023, 01:21
Но VB6 не компилирует TLB)))
0
1390 / 847 / 92
Регистрация: 08.02.2017
Сообщений: 3,613
Записей в блоге: 2
04.07.2023, 18:08  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Создаешь публичный проект (ActiveX Dll/Exe) создаешь нужные типы/классы и выставляешь галочку Remote Server Files.
Просто чудесно, дествительно работает! )
0
Испарился
 Аватар для HackerVlad
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
04.07.2023, 22:00
testuser2, серьёзно? никогда не пробовал такого)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.07.2023, 22:00
Помогаю со студенческими работами здесь

Как сделать Typelib (.TLB) файл для компонентов ActiveX
Здравствуйте. Помогите перелить данные с .ocx (без исходника) в файл TLB. нашел ссылку для VB http://support.microsoft.com/kb/161272 ...

Как зарегистрировать msdatsrc.tlb
Здравствуйте ! При разработке проекта была использована ссылка на msdatsrc.tlb. И все бы хорошо, но при создании инсталяшки, она во...

Как получить библиотеку типа *.tlb из COM-объекта *.exe
Здравствуйте! =) Прошу подсказку у экспертов в COM`е. Можно ли сгенерировать библиотеку типа Tratata.tlb по имеющемуся...

Как в редакторе tlb (COM) указать тип параметра "HBITMAP *p"
...если его нет в списке. Как вообще задаются кастомные типы? Вот, например, IThumbnailProvider::GetThumbnail, который я хочу реализовать: ...

Дерегистрация TLB
Добрый день. Подскажите, пожалуйста, как выполнить дерегистрацию TLB? В частном случае есть TLB для раннего импорта с одним UUID. TLB...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru