Войти
Вело-изобретателиФорумОколоигровой флейм

Что ещё таит от нас VB6?

Страницы: 1 2 Следующая »
#0
17:22, 19 янв 2013

Не так давно я уже писал, что в VB6, вопреки общепринятому мнению, возможен Типизированный вызов функций по указателю.
Так же в нём, оказывается, можно делать Нативные DLL.
Очередной сюрприз - Консольные приложения.
Далее нас ждёт работа с потоками, автор вышеуказанных проектов утверждает, что и эта возможность в VB6 имеется, просто отключена.

#1
17:48, 19 янв 2013

прикольно

#2
17:50, 19 янв 2013

Mikle
Про первые три знал из книжки. Про потоки не слыхал, но был же рабочий пример с фиберами. Не пойдёт?

#3
20:32, 19 янв 2013

Alprog
В книжке были примеры, как это сделать с помощью API, другое дело, что это делает САМ VB6. Автор этих находок использует недокументированные ключи и т. п. методы.

#4
20:36, 19 янв 2013

Mikle
> Автор этих находок использует недокументированные ключи и т. п. методы.
Вроде же это как раз его статьи в книге и были.

#5
11:33, 20 янв 2013

Alprog
> Вроде же это как раз его статьи в книге и были.
Нет, это свежее, в книге было не то. Понятно, что всё это в той или иной мере доступно при помощи WinAPI. Автор же делает так, как будто это уже есть в VB6, причём не подключено через TLB, а встроено. Причём делает это минимумом действий, просто открывая то, что там ДЕЙСТВИТЕЛЬНО уже есть. Пара цитат от автора про консольные приложения:

Я ноябре 2011 года я во время реверс-инжениринга VB6 наткнулся на кое-что интересное. Оказалось, что VB6 позволяет с помощью пары неизвестных ранее ключей C2Switches и LinkSwitches скармливать любые параметры командной строки компилятору и линкеру. Нас интересует последнее. Скормив ключ /subsystem:console линкеру, мы добьёмся того, что в генерируемых PE-файлах в качестве подсистемы будет значиться CUI-подсистема, то есть консольная подсистема, что автоматически означает создание консольного окна при запуске EXE-файла.

вчера я обнаружил, что объект класса FileSystemObject поддерживает интерфейс IFileSystem3, у которого есть метод, возвращающий ссылку на интерфейс ITextStream, олицетворяющий любой из стандартных потоков (stdin, stdout, stderr). Это означает, что используя объектную модель FSO можно очень легко организовать чтение/запись из/в стандартные потоки, которые для консольного приложения ассоциированы с консольными буферами.

Про нативные DLL:

В топку всякие примочки, подменяющие link.exe или делающие подобные грязные трюки. VB изначально позволяет вам обойтись без этого.

Так вот, если у вас в модулях есть функции Foo и Bar и вы хотите их экспортировать в своей DLL, единственное, что вам нужно сделать, это открыть vbp-файл блокнотом и добавить туда вот это:

[VBCompiler]
LinkSwitches=-export:Foo -export:Bar

И так у него всё.

#6
8:45, 21 янв 2013

Круто... Все больше и больше интересных плюшек...

После кодинга на VB.NET очень не хватает неймспейсов и наследования :3
Единственный существенный минус VB.NET перед VB6, то что NET это практически ВМ.

#7
11:53, 21 янв 2013

max255
В vb.net куча преимуществ - полноценное наследование, структуры с методами, переопределение операторов, возможность декларировать интерфейсы (нативный DirectX, при желании, можно использовать без лишних dll), потоки, вложенные Private классы, неймспейсы. Список можно продолжать. Если бы был нормальный порт DirectX, который не нужно устанавливать, и на который можно рассчитывать хотя бы на несколько лет вперёд, я бы уже полностью на него перешёл.
Хотя на VB6 всё равно, что-то сделать побыстрому удобнее, результат универсальнее.
max255
> NET это практически ВМ.
Это, как раз, не столь важно - скорость нормальная. VB6 тоже привязан к msvbvm60.dll, многие функции вызывает оттуда, но это меня мало волнует, это всего лишь маленькая dll, в отличие от фреймворка, которую не нужно регистрировать, и которая есть в любой винде. А, если даже и не будет - никакое лицензионное соглашение не мешает мне положить её в свой проект.

#8
12:26, 21 янв 2013

Mikle
> всего лишь маленькая dll, в отличие от фреймворка, которую не нужно регистрировать, и которая есть в любой винде
Сегодня мне уже сложнее запустить на компьютере свою МиС РПГ (dx8vb.dll и ещё кто-то, вроде), нежели игру на .net framework (он уже в каждом доме).

#9
13:27, 21 янв 2013

Mikle
А мне вот интересно, кто-нибудь пробовал портировать msvbvm? По сути если не юзать никакие референсы и собирать в native режиме, то остается только этот рантайм, из которого-то и нужно поддержка строк, да аллокатор ( ну может что-то там еще специфичное, вроде поддержки variant ). Может есть подобные проекты?:)

#10
14:10, 21 янв 2013

Alprog
> Сегодня мне уже сложнее запустить на компьютере свою МиС РПГ (dx8vb.dll и ещё
> кто-то, вроде), нежели игру на .net framework (он уже в каждом доме).
dx8vb.dll - это и есть виновник. С тем, что было сделано на ManagedDX, тоже уже не просто, а сам по себе фреймворк из графики обеспечивает, разве что, GDI+.
Hartmann
> вот интересно, кто-нибудь пробовал портировать msvbvm?
Автор перлов из нулевого поста вроде как его декомпилировал. В каких целях - не знаю.

Прошло более 1 года
#11
14:01, 17 апр 2014

Оказывается VB6 поддерживат вызов cdecl-функций:
http://bbs.vbstreets.ru/viewtopic.php?f=54&t=44385

#12
18:38, 19 апр 2014

Вот еще вариант вызова функций по указателю http://www.cyberforum.ru/visual-basic/thread1150127.html#post6053165
Работа с указателями на переменные http://www.cyberforum.ru/blogs/354370/blog2259.html
Пример, где через указатели проход по Dictionary связанному списку http://www.cyberforum.ru/visual-basic/thread1146688-page3.html#post6044230 http://www.cyberforum.ru/visual-basic/thread1146688-page2.html#post6041629
Многопоточность работает на ура в VB6, только есть ограничения http://www.cyberforum.ru/blogs/354370/blog1965.html , http://www.cyberforum.ru/blogs/354370/blog1855.html .
Вот пример внедрения в другой процесс кода на VB6 http://www.cyberforum.ru/blogs/354370/blog1955.html

Прошло более 7 месяцев
#13
10:20, 16 ноя 2014

Драйвер на VB6 от the trick:
http://bbs.vbstreets.ru/viewtopic.php?f=99&t=46839

#14
11:13, 16 ноя 2014

Mikle

Для просмотра этого форума вы должны быть авторизованы.

Страницы: 1 2 Следующая »
Вело-изобретателиФорумОколоигровой флейм

Тема в архиве.