Один товарищ тут пытался меня убедить, что, дескать, для работы программ, написаных на VB6 требуется не только msvbvm60, а ещё какие-то две две библиотеки. (LOL ).
Как выяснилось, второй из них была тоже msvbvm60, а третей - stdole2.tlb (опять же, LOL ). ТоварищЪ просто насмотрелся Project->Reference-ов. Но это ладно, товарищ хоть и глубоко заблуждался, но его попытки докать мне свою правоту навели меня на интересную мысль.
Собственно мысль заключается в следующем.
Мутант?
Так как новых VB уже (к превеликому сожалению) не будет, с msvbvm60 мы можем делать всё, что угодно. Поэтому, возникала идея написать МОД к ... VB6. Пишут же моды скажем, к GTA:San Andreas, почему бы не написать мод к VB?
Я не знаю заведомо, какое отношение было бы у Microsoft к этой затее, но, собственно, я ещё ничего не делал.
По моему (скромному?) мнению, VB6 страдает от недостатка огромного числа функций. Вобщем, куча функций, которые "ну просто должна быть" - отсутсвуют. Например, функции min(a,b) и max(a,b).
Идея заключается в следующем:
- Мы берём MSVBVM60.DLL.
- Извлекаем из неё TLB
- Добавляем в библу свою секцию (кода), наполненную горой полезного функционала (мин, макс, всяческие сортировки, rnd-шки с неравномерным распределением, недостающую тригонометрию (арксинусы, там), обёртку над StrConv (добавляющую ANSI->OEM перекодирвки), и т.п.)
- Добавляем туда свои классы (которые потом будут доступны в VB также, как класс Collection)
- Прописываем все нововведения (функции, классы) в извлечённой TLB
- Прописываем в TLB кроме своих функций ещё и vbvm-овские, которых в TLB нет, но которые очень полезны, GetMem/PutMem и прочие. Заодно можно вшить туда и Эданмоскую TLB (Эданмо обидится? ) и win32.tlb. Так мы можем избавться от необходимости вообще декларить какие-либо winapi - всё уже будет в vb. О константах тоже не забываем
- Можем выкинуть ещё и секцию ENGINE (сэкономим 52 кб), лишив библу поддержки P-кода (кому он нафиг нужен? ). После чего библиотеку можно смело переименовывать в msvbrt60 (на манер msvcrt) .
- Меняем в TLB все GUID-ы и название самой библы.
- Зашиваем TLB обратно в библу, меняем msvbvm60 на msvbvm61.
Запускаем VB6 и вуаля - все новые сущности ждут нас. (Есть конечно такой вариант развития событий, что нас будет ждать сообщение об ошибке, но это вряд ли)
Что думаете?