|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
Как работать с потоками IStream в Visual Basic 616.11.2024, 18:08. Показов 14402. Ответов 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? |
| 13.01.2025, 01:21 | |||
|
Добавлено через 3 минуты
0
|
|||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|||||||
| 14.01.2025, 02:21 [ТС] | |||||||
|
Из этих 4 способов, я выделю два самых достойных способа это:
1. Использование DispCallFunc (этот вариант понравится для testuser2 так как он не любит недокументированные функции) 2. Использование связки недокументированных функций SHWeakQueryInterface/SHWeakReleaseInterface Оба способа я хочу потом разобрать более подробно. В обоих случаях мы сможем получить доступ к объекту IStream из любого кода позднего связывания через
Я когда поднимал эту тему вообще, в самом начале написал, что меня не интересует вообще даже всякий там код раннего связывания, через TLB, так как делиться этим кодом с другими людьми, будет очень неудобно. Добавлено через 5 минут
0
|
|||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 14.01.2025, 03:09 [ТС] | ||
|
Добавлено через 9 минут Описания к функции vbaCastObj абсолютно нигде нет в интернете, однако нам примерно понятно, что vbaCastObj вызывает QueryInterface на объекте, но существует аналог этой функции это SHWeakQueryInterface которая немного по другому чуть работает и которая тоже не документирована... Ну вот смотри для того чтобы вызвать QueryInterface на объекте The Trick использует связку двух функций это vbaCastObj и PutMem4, я достигаю того же самого используя тоже связку двух функций это SHWeakQueryInterface и SHWeakReleaseInterface. Ну короче я примерно объяснил. А более подробно только The Trick знает. Добавлено через 2 минуты Короче чтобы, например, найти объект IUnknown внутри объекта ADODB.Stream приходится использовать только эти недокументированные функции. Либо vbaCastObj/PutMem4 либо SHWeakQueryInterface/SHWeakReleaseInterface.
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 14.01.2025, 03:40 [ТС] | ||
|
Ай не хочу я им писать мне это не надо.
Добавлено через 17 секунд
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||||||
| 14.01.2025, 21:32 [ТС] | ||||||
|
Итак вот вариант как использовать магическое число 76 и работать с объектом, только для Windows 7:
На форме обязательно должна быть картинка, это просто тестовый проект-пример.
0
|
||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 14.01.2025, 21:34 [ТС] | |
|
Но как сохранить поток IStream в файл на диске более простым способом я не знаю, к сожалению, только через преобразование в байтовый массив и ручное сохранение на диске... А хотелось бы какую-нибудь простую функцию которая бы принимала поток IStream и записывала бы сразу в файл на диске поток.
0
|
|
|
Модератор
|
|
| 14.01.2025, 21:48 | |
|
SHCreateStreamOnFileEx - создает COM поток на файле, уже как мне кажется, писал об этом.
0
|
|
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|||
| 15.01.2025, 23:25 [ТС] | |||
|
Добавлено через 1 минуту Теперь значит можно так же пользоваться технологией The Trick, получается и использовать функцию __vbaCastObj уже смело) Добавлено через 30 секунд Очень удивлён как быстро они откликнулись) Молодцы прям) Добавлено через 3 часа 30 минут
0
|
|||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 15.01.2025, 23:33 [ТС] | ||
|
Добавлено через 1 минуту Ладно попробуем переписать декларацию так чтобы небыло никаких структур. Добавлено через 1 минуту STGM это же просто набор констант, не понимаю зачем fafalone тогда это написал как структуру - наверное ему так просто удобнее, короче если там можно просто написать Long тогда всё ок
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 15.01.2025, 23:35 [ТС] | ||
|
0
|
||
|
Модератор
|
||
| 15.01.2025, 23:35 | ||
|
0
|
||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
||
| 15.01.2025, 23:36 [ТС] | ||
|
Или тогда по твоему что это значит в его коде "ByVal grfMode As STGM"...
0
|
||
|
Модератор
|
||||||||
| 15.01.2025, 23:44 | ||||||||
1
|
||||||||
|
Вернулся
1778 / 673 / 46
Регистрация: 10.09.2021
Сообщений: 2,820
|
|
| 15.01.2025, 23:54 [ТС] | |
|
Мне только непонятно теперь что два последних параметра - это стримы. В какой параметр нужно указать стрим не знаю.
И по моей глупой идее я хотел передавать существующий стрим с данными в функцию, но потом понял наверное что я был неправ. И что скорее всего функцию вообще вернёт абсолютно новый стрим который будет синхронизирован с файлом и в него придётся уже записывать данные. Это всё мои догадки. Не знаю поведения этой функции. Гадаю вот. Добавлено через 51 секунду В простой функции SHCreateStreamOnFile там хотябы один параметр стрима, там не пришлось бы долго ломать голову как здесь.
0
|
|
|
Модератор
|
||||||||
| 15.01.2025, 23:56 | ||||||||
|
HackerVlad, чтобы сохранить картинку в стрим нужно этот стрим и передавать:
1
|
||||||||
| 15.01.2025, 23:56 | |
|
Можно ли научится работать 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 и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|