Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769

Как вызывать методы из классов NET Framework в программе на VB6?

06.12.2024, 03:04. Показов 1680. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как вызывать методы из классов NET Framework в программе на VB6?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2024, 03:04
Ответы с готовыми решениями:

Как вызывать методы C# ASP.NET Core в JS?
Как вызывать методы C# ASP.NET Core в JS?

Как заменить графические методы pset, line, ... из VB6 в VB.net
Как заменить графические методы cls, pset, line, ... из VB6 в VB.net ?

Как вызывать окно (Excel) Сохранить из VB6
Подскажите, есть ли компонент который бы вызывал окно которое вызывается при нажатии сохранить Для нового вопроса создавайте новую тему. ...

25
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,592
Записей в блоге: 1
06.12.2024, 03:44
В референсах можно подключить mscorlib там много чего есть. Я еще видел код с использованием крипто-класса (название не помню точно) можно файлы шифровать, строки

Добавлено через 2 минуты
У дотнетовских объектов не видно экспортируемых методов и свойств в окне locals. Еще недостаток долгий первыйзапуск - загрузка дотнета. Потом вроде все быстро.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
06.12.2024, 03:47  [ТС]
Я поставлю более конкретный вопрос: как мне например обратиться к System.IO.Compression классу?
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,592
Записей в блоге: 1
06.12.2024, 03:50
Подключи mscorlib и посмотри доступен ли там этот класс.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
06.12.2024, 03:56  [ТС]
testuser2, смотри есть например класс: https://learn.microsoft.com/ru... ew=net-8.0
как его использовать в vb6 можешь мне объяснить на пальцах и возможно ли это вообще

Добавлено через 2 минуты
Цитата Сообщение от testuser2 Посмотреть сообщение
Подключи mscorlib
Подключил вроде а как смотреть и где

Добавлено через 1 минуту
Я где-то прочитал что не все классы у них там комовские. Некоторые нельзя вообще вызвать типа. Хотя я и так без понятия как вызывать такие объекты.
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,592
Записей в блоге: 1
06.12.2024, 03:57
Я ни у компа. Я бы подключил mscorlib и поискал в браузере объектов по строке zip в первую очередь. Во вторую поискал в Яндексе по теме
"System.IO.Compression vba/vb6"
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
06.12.2024, 04:05  [ТС]
А у тебя есть примеры как работать с mscorlib а то я ничего не понял короч
0
sleep
 Аватар для I can
4934 / 4607 / 841
Регистрация: 13.04.2015
Сообщений: 9,776
06.12.2024, 06:17
Цитата Сообщение от HackerVlad Посмотреть сообщение
есть например класс: https://learn.microsoft.com/ru... ew=net-8.0
Это вообще не относится к Framework, чисто NET.
1
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,592
Записей в блоге: 1
06.12.2024, 07:30
Цитата Сообщение от HackerVlad Посмотреть сообщение
А у тебя есть примеры как работать с mscorlib
Допустим вот https://stackoverflow.com/ques... decryption
Там используется позднее связывание plain_byte_data = CreateObject("System.Text.UTF8Encoding").GetBytes_4(plain_string)
но я посмотрел, если подключено mscrolib, то можно обявить переменную так
Visual Basic
1
Dim UTF8Encoding As mscorlib.UTF8Encoding
Zip-класса нет в mscorlib
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,526
Записей в блоге: 22
06.12.2024, 08:36
Для классов Net. надо делать обёртки в СОМ.
Обернуть можно далеко не всё.
Классы .NET могут быть спрограммированы таким образом, что они будут доступны как COM-объекты, надо только их зарегистрировать специальной утилитой. Многие стандартные классы .NET Framework поддерживают такую возможность. Например, командная строка регистрации:

C:\WINDOWS\Microsoft.NET\Framework\v2.0. 50727>regasm System.dll

После этого на VBScript будет работать, например, такой код:

Visual Basic
1
2
Set web = CreateObject("System.Net.WebClient")
web.DownloadFile "http://script-coding.com/", "c:\temp\script-coding.htm"
Этот скрипт сохранит страничку "http://script-coding.com/" в файл "c:\temp\script-coding.htm".
1
sleep
 Аватар для I can
4934 / 4607 / 841
Регистрация: 13.04.2015
Сообщений: 9,776
06.12.2024, 08:55
Лучший ответ Сообщение было отмечено HackerVlad как решение

Решение

Цитата Сообщение от Argus19 Посмотреть сообщение
Для классов Net. надо делать обёртки в СОМ
Вот вам обёртка(в архиве) для класса System.IO.Compression

Код обёртки
C#
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
using System;
using System.IO;
using System.IO.Compression;
using System.Runtime.InteropServices;
 
namespace CoCOMWrapper
{
    [ComVisible(true)]
    [Guid("12345678-90AB-CDEF-1200-567890ABCDEF")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface ICompressionWrapper
    {
        void CompressFile(string inputFile, string outputFile);
    }
 
    [ComVisible(true)]
    [Guid("12345678-90AB-CDEF-1211-567890ABCDEF")]
    [ClassInterface(ClassInterfaceType.None)]
    public class CompressionWrapper : ICompressionWrapper
    {
        public void CompressFile(string inputFile, string outputFile)
        {
            using (FileStream originalFileStream = new FileStream(inputFile, FileMode.Open, FileAccess.Read))
            using (FileStream compressedFileStream = new FileStream(outputFile, FileMode.Create, FileAccess.Write))
            using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
            {
                originalFileStream.CopyTo(compressionStream);
            }
        }
    }
}
Пример (именно пример!! У вас должны быть свои пути) регистрации:
(запускать из скомпилированного файла с правами админа)
Visual Basic
1
   Shell """C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe"" """ & App.Path & "\CoCOMWrapper.dll"" /codebase", vbNormalFocus
Пример использования:

Visual Basic
1
2
3
4
     Dim obj As Object
     Set obj = CreateObject("CoCOMWrapper.CompressionWrapper")
     
     Call obj.CompressFile(App.Path & "\1.txt", App.Path & "\1.zip")
Проверил, работает. Но на фига этот геморрой?
Вложения
Тип файла: rar CoCOMWrapper.rar (2.0 Кб, 7 просмотров)
2
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,592
Записей в блоге: 1
06.12.2024, 12:00
Цитата Сообщение от I can Посмотреть сообщение
C#
1
using (FileStream originalFileStream = new FileStream(inputFile, FileMode.Open, FileAccess.Read))
using это типа With - существование переменной только в пределах блока?

Добавлено через 6 минут
Кстати по этому коду видно, что на шарпе достаточно просто создавать com-классы
0
sleep
 Аватар для I can
4934 / 4607 / 841
Регистрация: 13.04.2015
Сообщений: 9,776
06.12.2024, 12:39
Цитата Сообщение от testuser2 Посмотреть сообщение
using это типа With - существование переменной только в пределах блока?
Нет, тут важнее то, что создаётся объект, который существует в пределах этого блока.
Таким образом за пределами using-а не нужно объект диспозить, уничтожать или надеяться на сборщик мусора, очень удобно.
2
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,592
Записей в блоге: 1
06.12.2024, 13:10
Цитата Сообщение от I can Посмотреть сообщение
создаётся объект
Ну окей, объект создается, уничтожается, это похоже на "With New Object", но более продвинутый вариант.., а что с переменной, можно ли во внешнем коде обратиться к самой переменной, инициализированной внутри Using, или можно ли использовать то же самое имя для переменной во внешнем коде или другом блоке using?

Добавлено через 8 минут
Да, смотрю, это немного другое. Хотя, то о чем я говорю, обеспечивается функциями внутри функций..
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
06.12.2024, 14:22  [ТС]
Цитата Сообщение от Argus19 Посмотреть сообщение
web.DownloadFile "http://script-coding.com/", "c:\temp\script-coding.htm"
Этот код я тоже нашёл в интернете, и уже попробовал, этот код работает, действительно, лишь после регистрации библиотеки.

Добавлено через 19 минут
Осталось непонятным только почему некоторые классы вызываются без всяких там сложных регистраций COM-серверов?

Добавлено через 12 минут
Короче говоря без внешней DLL вызывать дотнетовские классы никак нельзя?

Добавлено через 1 минуту
Остаётся у меня только вопрос, почему тогда можно вызывать некоторые другие классы без всяких там регистраций COM, вот пример:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Command1_Click()
    Dim myFiles As Object
    
    Set myFiles = CreateObject("System.Collections.ArrayList")
    
    myFiles.Add "яблоки"
    myFiles.Add "груши"
    myFiles.Add "дыни"
    myFiles.Add "арбузы"
    
    myFiles.Sort
    
    Me.Cls
    Print Join(myFiles.ToArray, vbCr)
End Sub
0
Эксперт по электронике
6806 / 3233 / 335
Регистрация: 28.10.2011
Сообщений: 12,622
Записей в блоге: 7
06.12.2024, 14:41
Цитата Сообщение от testuser2 Посмотреть сообщение
using это типа With - существование переменной только в пределах блока?
Это использование содержимого пространства имен без использования имени.
https://ru.wikipedia.org/wiki/... мирование)
1
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,592
Записей в блоге: 1
06.12.2024, 14:58
Цитата Сообщение от Argus19 Посмотреть сообщение
C:\WINDOWS\Microsoft.NET\Framework\v2.0. 50727>regasm System.dll
Я не проверял как было до, но после выполнения C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe System.dll, я появились ли какие-нибудь референсы, связанные с этой библиотекой. Во-первых mscorlib.tlb лежит именно в папке 4й версии
Code
1
C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb
Во-вторых есть еще ссылки
Code
1
2
3
4
C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.tlb
C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Drawing.tlb
C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.EnterpriseServices.tlb
C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Windows.Forms.tlb
Но, не знаю, были они изначально или появились после регистрации..

Добавлено через 10 минут
После подключения System.tlb получилось загрузить страничку таким кодом
Visual Basic
1
2
3
4
    Dim web As System.WebClient
    
    Set web = New System.WebClient
    web.DownloadFile "http://script-coding.com/", "c:\fold\script-coding.htm"
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
06.12.2024, 15:10  [ТС]
Цитата Сообщение от testuser2 Посмотреть сообщение
были они изначально или появились после регистрации
Были изначально, я проверил.

Добавлено через 45 секунд
Цитата Сообщение от testuser2 Посмотреть сообщение
После подключения System.tlb получилось загрузить страничку таким кодом
Да, я это тоже уже пробовал, ещё вчера.

Добавлено через 10 минут
testuser2, получается, что регистрировать через regasm.exe не обязательно, если подключать C:\Windows\Microsoft.NET\Framework\v4.0. 30319\System.tlb? Как ты думаешь?
1
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,592
Записей в блоге: 1
06.12.2024, 15:17
Вот такие пирожки, не получается зарегистрить..
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\Windows\system32>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe Sys
tem.IO.Compression.dll
Microsoft .NET Framework Assembly Registration Utility 4.8.3761.0
для Microsoft .NET Framework 4.8.3761.0
(C) Корпорация Майкрософт (Microsoft Corporation).  Все права защищены.
 
RegAsm : warning RA0000 : Не зарегистрировано ни одного типа
 
C:\Windows\system32>C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe Sys
tem.IO.dll
Microsoft .NET Framework Assembly Registration Utility 4.8.3761.0
для Microsoft .NET Framework 4.8.3761.0
(C) Корпорация Майкрософт (Microsoft Corporation).  Все права защищены.
 
RegAsm : warning RA0000 : Не зарегистрировано ни одного типа
 
C:\Windows\system32>
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
06.12.2024, 15:19  [ТС]
Очень жаль, что не получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2024, 15:19
Помогаю со студенческими работами здесь

В списке Target Framework не выбирается .NET Framework 4 только .NET Framework 4 Client Profile
Свойства проекта (Project -> Properties) -> вкладка Compile -> Advenced complie options -> в списке Target Framework не выбирается .NET...

Использование классов Net Framework в программах на VB 6.0
Спасибо "Яндексу". Ищешь одно, получаешь что угодно:). Нашёл статью: http://www.interface.ru/home.asp?artId=6875 попробовал....

Не работает summary в библиотеке классов (.NET framework)
Не работает summary в библиотеке классов, пробовал в самом проекте сделать (сделал второй класс, там summary работает) Кто знает, в чем...

Как вызывать методы в C#?
Как вызвать метод а(), который содержит 4 аргумента? class Program { static void Main(string args) { ...

Изменить версию .NET Framework в уже созданной программе
Подскажите можно ли изменить версию NET Framework уже в созданной программе, чтоб не пересоздавать её заново ? Все настройки облазил не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru