|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
Как работать с потоками IStream в Visual Basic 616.11.2024, 18:08. Показов 14396. Ответов 206
Метки нет (Все метки)
Всем привет! Я недавно узнал о таком чуде как потоки IStream, это такие данные в оперативной памяти вашего процесса EXE типа байтовых массивов только круче. Как я это понял лично. Вот мне очень интересно стало поработать именно со стримами. Если у кого-то есть какие-то наработки в этом плане буду рад, если поделитесь.
Из того, что я пока узнал: Есть API для создания, чтения и записи стримов - это функции SHCreateMemStream, IStream_Write, IStream_Read и IStream_Size. Это конечно очень интересно всё, но я не нашёл функции для позиционирования IStream_Seek (её что не существует?). Есть возможность управлять стримами через объявления в TLB, однако мне эта тема не интересна, так как я не люблю подключать всякие там TLB. Есть возможность управлять потоками IStream через специальную функцию DispCallByVtbl Хотелось бы подробно разобрать эту тему и научиться: 1. Создавать поток IStream 2. Записывать 3. Считывать 4. Позиционировать
0
|
|
| 16.11.2024, 18:08 | |
|
Ответы с готовыми решениями:
206
Как работать с камерой в Visual Basic Как работать в Visual Basic'е с реестром? Как работать с таблицами Ecxel в Visual Basic? |
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 15.01.2025, 23:57 [ТС] | ||
|
Вот что такое pstmTemplate? Толком никакого описания в MSDN просто нет.
Добавлено через 37 секунд
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 16.01.2025, 00:04 [ТС] | |
|
Спасибо. Смотри как я думал.
Я думал что я укажу в качестве параметра существующий стрим и в файл сразу запишется существующий стрим. Это была такая моя логика у меня в голове. А тут другая логика. Тут создаётся абсолютно новый стрим, куда потом ещё придётся вручную копировать клонировать данные. Тут уже в два этапа как бы, и не так как я думал. Хотя тот же результат. Хотя нет, памяти же в два раза больше будет жрать из-за этих клонирований/копирований. Добавлено через 1 минуту Короче как я понял нет такой функции которая приняла бы в качетсве параметра уже существующий стрим с готовыми данными и сразу бы создала и записала файл с этими данными...
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 16.01.2025, 00:08 [ТС] | |
|
The trick, да, за это большое спасибо конечно, хотя я собирался код сам писать сейчас)))
Добавлено через 1 минуту Я про GdipSaveImageToStream тоже думал кстати, если делать те же вещи с помощью GDI API то ещё и в XP будет работать) То что там идёт через WIA которой только от висты)
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|||||||
| 16.01.2025, 00:18 [ТС] | |||||||
|
Добавлено через 53 секунды Смотри я пытался переписать свой скрипт для сохранения стрима в файл, с помощью функции, не получилось:
0
|
|||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 16.01.2025, 00:59 [ТС] | |
|
The trick, я это понимаю. Но мне интересно именно почему не работает то что я написал. Я хочу именно понять работу ADODB.Stream
Добавлено через 41 секунду ADOStream.CopyTo что должно принимать в качестве параметра? и почему не срабатывает я не понимаю Добавлено через 21 минуту Вот описание кстати я нашёл: https://learn.microsoft.com/en... method-ado Добавлено через 38 секунд Но непонятно мне почему я не могу скопировать через этот метод ADOStream.CopyTo в любой новый поток, я не понимаю этого Добавлено через 5 минут The trick, а ещё ты кстати не знаешь как превратить указатель в объект? обратной противоположности функции ObjPtr типа, часто мне бывает надо но не знаю как вообще
0
|
|
|
Модератор
|
|||||||||
| 16.01.2025, 11:32 | |||||||||
1
|
|||||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||||||||||||
| 16.01.2025, 15:09 [ТС] | ||||||||||||
|
Короче как я понял ADOStream.CopyTo может копировать только в другой такой же объект ADODB.Stream, но в IStream копировать не хочет совсем вообще, хотя IStream.CopyTo , будет копировать, там какой-то другой CopyTo всё что я понял
Добавлено через 19 минут The trick, твой пример отличный. Однако некоторые чайники не поймут что что-то вообще произошло, так как любое рисование в моменте загрузки формы Form_Load не отображается без AutoRedraw = True, короче вот будет более наглядный пример:
Вот так работает:
То есть этот CopyTo какой-то совсем другой CopyTo, не как в интерфейсе IStream хотябы казалось бы одинаково должно быть... Добавлено через 2 минуты Короче тогда единственный способ как сохранить данные стрима из ADODB.Stream это преобразование в байтовый массив и ручное сохранение байтового массива в файл на диске, никакие API тут мне не помогут короче. Добавлено через 1 минуту API-функция SHCreateStreamOnFileEx оказалась бессильна для сохранения стрима из объекта "ADODB.Stream" и никак не может мне помочь сохранить этот стрим в файл... Добавлено через 2 минуты Кстати там есть метод (у объекта ADODB.Stream) LoadFromFile но он работает по другому, никак функция SHCreateStreamOnFileEx... Добавлено через 2 минуты Так там всё проще! Там есть SaveToFile оказывается... Добавлено через 23 секунды То есть API вообще не надо тогда получается. Добавлено через 3 минуты Пхахаххахаха!!!! Мне надо было написать всего одну строку кода оказывается! А я думал через API каким-то сложными ухищрениями как сохранить в файл... Добавлено через 10 минут Какой же я глупый иногда бываю, а, когда не полностью читаю документацию...
0
|
||||||||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||||||
| 16.01.2025, 15:11 [ТС] | ||||||
|
Итак, теперь я добился чего я в идеале и хотел:
0
|
||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 16.01.2025, 15:17 [ТС] | ||
|
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 16.01.2025, 15:36 [ТС] | |
|
The trick, ну я же костыльщик профессиональный) шучу конечно) на самом деле я просто учусь программировать) разбираю твой же код по косточкам) так что костыльщик - это ты: https://www.vbforums.com/showt... ost5499151
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||||||||
| 16.01.2025, 15:58 [ТС] | ||||||||
|
Но тут фишка такая что функция простая для копирования и вставки для любых людей, даже для VBA, чтобы код легко передавался другим людям, без TLB, фалфалон и ты выступаете оба за TLB и раннее связывание но оно не работает в VBA например Добавлено через 8 минут
0
|
||||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 16.01.2025, 16:04 [ТС] | ||
|
0
|
||
| 16.01.2025, 16:04 | |
|
Можно ли научится работать ASP.NET на основе Visual Basic Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ? Вычисление значений функции двух переменных в Visual Basic - Visual Basic
Как работать с потоками? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|