Форум программистов, компьютерный форум, киберфорум
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. Показов 1602. Ответов 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
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 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
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 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
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 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
4916 / 4566 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
06.12.2024, 06:17
Цитата Сообщение от HackerVlad Посмотреть сообщение
есть например класс: https://learn.microsoft.com/ru... ew=net-8.0
Это вообще не относится к Framework, чисто NET.
1
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 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
1426 / 443 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 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
4916 / 4566 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
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
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 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
4916 / 4566 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
06.12.2024, 12:39
Цитата Сообщение от testuser2 Посмотреть сообщение
using это типа With - существование переменной только в пределах блока?
Нет, тут важнее то, что создаётся объект, который существует в пределах этого блока.
Таким образом за пределами using-а не нужно объект диспозить, уничтожать или надеяться на сборщик мусора, очень удобно.
2
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 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
Эксперт по электронике
6515 / 3144 / 332
Регистрация: 28.10.2011
Сообщений: 12,361
Записей в блоге: 7
06.12.2024, 14:41
Цитата Сообщение от testuser2 Посмотреть сообщение
using это типа With - существование переменной только в пределах блока?
Это использование содержимого пространства имен без использования имени.
https://ru.wikipedia.org/wiki/... мирование)
1
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 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
1381 / 837 / 89
Регистрация: 08.02.2017
Сообщений: 3,507
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru