Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/48: Рейтинг темы: голосов - 48, средняя оценка - 4.94
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180

Вызов функции из DLL

06.11.2015, 14:28. Показов 10140. Ответов 10
Метки js (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго, уважаемые форумчане, пытаюсь вызвать функцию средствами vbs/js из сишной библиотеки
нашел скрипт
Visual Basic
1
2
3
4
5
6
7
Options Explicit
Dim Def_Environment, Def_DLL, activated, lib, DLL 
Set Def_Environment = DLL.DefineEnvironment(True) 
Set Def_DLL = Def_Environment.DefineDLL("MetrinoPlatformWin32") 
Call Def_DLL.DefineProc("roma_func", vt_int, vt_int) 
Set lib = Def_Environment.Load("C:\Users\username\Desktop\roma_func.dll") 
Call lib.roma_func(1, 2, activated)
ошибка - требуется объект DLL
есть ли возможность вызвать функцию без создания com(api) интерфейса в библиотеке?
спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2015, 14:28
Ответы с готовыми решениями:

Вызов функции из dll. Dll не определена в коде и подключается программно
Я написал простую функцию которая возвращает негатив bitmap'а Function Negative(ByVal Bmp As Bitmap) Dim Bmp2 As New...

Inject dll, а также вызов функции из этой же dll
Всем привет, заинжектить dll в другой процесс получилось, но еще необходимо вызвать функцию в этой длл, каким образом это реализовать? ...

Вызов функции DLL VB.NET в DLL C++
Как вызывать функции dll VB.NET через dll С++, которая приинжекчена к процессу проводника?

10
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
06.11.2015, 15:28  [ТС]
C++
1
2
3
roma_func(a,b)
fun = @(x) exp(-x.^2).*log(x).^2;
roma_func = integral(fun,a,b);
Вложения
Тип файла: rar roma_func.rar (21.9 Кб, 10 просмотров)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.11.2015, 21:47
Лучший ответ Сообщение было отмечено hristofernando как решение

Решение

Цитата Сообщение от hristofernando Посмотреть сообщение
есть ли возможность вызвать функцию без создания com(api) интерфейса в библиотеке?
Нет.
Цитата Сообщение от hristofernando Посмотреть сообщение
пытаюсь вызвать функцию средствами vbs/js из сишной библиотеки
Этот код вообще не понятно из каких дебрей вытянут.
DynamicWrapperX поможет.
1
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
09.11.2015, 22:56  [ТС]
Спасибо!
Цитата Сообщение от Dragokas Посмотреть сообщение
Этот код вообще не понятно из каких дебрей вытянут.
да дебри там "густыми" были) я как то на автомате скопировал и запостил))
решение нашел еще два 1) - создание консоли для динамической подключения dll
Подправить консольное приложение работы с dll
2) (не пробывал) создание com http://www.codeproject.com/Art... -to-Use-It
и многие форумы утверждают что будет работать следующий скрипт

Visual Basic
1
2
3
4
5
Dim mObj, blnValid
' Create
set mObj = CreateObject("C:\Users\username\Desktop\roma_func.dll")
blnValid = mObj.roma_func(1,2)
WScript.Echo blnValid
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.11.2015, 01:45
Цитата Сообщение от hristofernando Посмотреть сообщение
2) (не пробывал) создание com http://www.codeproject.com/Art... -to-Use-It
Мимо.
Это использование COM, а не создание собственной COM-библиотеки.
Создание - это вот как пример простейшего.
Но по всем тонкостям лучше обращаться в раздел C++.

На счет кода VBScript, здесь много ума не нужно.
Я собственно изначально такое не предлагал, т.к. Вы написали:
Цитата Сообщение от hristofernando Посмотреть сообщение
есть ли возможность вызвать функцию без создания com(api) интерфейса в библиотеке?
А по поводу API-враппера - там все просто, только доки почитать и правильно объявить аргументы.
Права админа не обязательны.

Добавлено через 5 минут
И писать лучше с соглашением stdCall. Не знаю точно, как он поведет себя с cdecl.
Если решитесь все таки взяться за интерфейсы, то вот еще немного пищи для ликбеза.
1
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
12.11.2015, 13:17  [ТС]
Dragokas, ясно, спасибо! я попробовал заюзать DynamicWrapperX как он стал стучать в сеть

и я ограничился консолью.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.11.2015, 15:43
hristofernando, судя по whois это сервер сертификации Майкрософт.
0
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
12.11.2015, 19:32  [ТС]
Dragokas, и последний вопрос) есть ли возможность в DynamicWrapperX определить на наличие вводимого имени функции в указанной dll ? или просто вывести список функций указанного dll ?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.11.2015, 21:25
Какова цель, тем более что dll Ваша?
Контроль ошибок можно обеспечить через проверку кода ошибки, например:

Visual Basic
1
2
3
4
5
On Error Resume Next
Set Wrap = CreateObject("DynamicWrapperX.2")
Err.Clear
Wrap.Register "User32", "MessageBoxWA", "i=lwwl", "r=l"
if Err.Number <> 0 then msgbox "Код: " & Err.Number & " - " & err.description
1
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
12.11.2015, 22:23  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Какова цель, тем более что dll Ваша?
библиотек много как и функций и я не единственный пользователь а подключать их нужно к mathcad но если все ошибки не предупредить то vbs элемент на листе mathcad перестанет быть активным и даже перерасчет листа не поможет поэтому нужно определить все исходы. И спасибо еще раз за инфу!
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.11.2015, 23:17
Программный отлов ошибок в VBS - это нечто совершенно иное, чем в других языках или даже других диалектах бейсиков.
Директива On Error Resume Next говорит о том, чтобы безусловно игнорировать все ошибки.
Поэтому после проверки кода ошибки рекомендую сразу же включить стандартный механизм выбрасывания исключений директивой On Error Goto 0, иначе Вы даже не узнаете, что где-то дальше в коде (где не предусмотрена проверка) у Вас какая-то ошибка случилась.

Добавлено через 1 минуту
Хотя бы включить ошибки на то время, пока проводите первичные тесты.
Цитата Сообщение от hristofernando Посмотреть сообщение
но если все ошибки не предупредить то vbs элемент на листе mathcad перестанет быть активным
Да. Вполне знакомая ситуация.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2015, 23:17
Помогаю со студенческими работами здесь

Вызов программой, написанной на С++, функции из dll, написанной на Assembler (явное подключение dll)
Доброго времени суток!Задали лабораторную работу: программа, написанная на с++ должна подключать dll, написанную на Assembler и вызывать...

Вызов функции из Dll
Суть проблемы. Пишу программу подобие работы с БД. Написал функцию добавления в базу данных type Client = record Numer:...

Вызов функции из Dll
Помогите пожалуйста решить проблему. Вот код вызывает функцию из под vb.net. Private Declare Function goup Lib &quot;my.dll&quot; (ByVal...

Вызов функции с DLL
Сразу говорю пишу программу как и *.dll в VisualStudio 2010. Суть: написал dll, вроде-бы все нормально скомпилировало и удачно создало...

Вызов функции из DLL
Здравствуйте. Я, вообще-то, на Си не писал никогда. Для моих нужд хватало делфи и VB, но тут появилась необходимость использовать функции...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru