Nano Hash - криптовалюты, майнинг, программирование

Использование DLL в VBScript

Я скомпилировал код C # в DLL, но у меня мало опыта работы с ними. Мой код C # содержит класс HelloWorld со статическим методом Print(). Я хотел бы использовать эту DLL в VBScript для вызова метода Print(). Я знаю, что это база, но я использую это как тест для более крупного проекта, который в конце концов будет скомпилирован в DLL. Как для этого будет выглядеть объявление и как будет выглядеть вызов метода?

23.03.2012

  • возможный дубликат Как вызвать функцию C # DLL из VBScript 23.03.2012
  • Я действительно проверял эту ссылку, но она не совсем понимает то, что мне нужно. Я хочу динамически загружать dll во время выполнения через VBScript из заданного пути к файлу, а не регистрироваться на сервере. Опять же, библиотеки DLL для меня в новинку, так что это может быть то, что происходит в этом ответе, я просто не вижу этого. 23.03.2012

Ответы:


1

Важно: оба метода будут работать, только если DLL предоставляет COM-интерфейс.

Если ваша dll зарегистрирована в системе, используйте CreateObject с ее ProgID.

Set myObject = CreateObject("MyReallyCoolObject.HelloWorld")
myObject.Print

Если ваш объект не зарегистрирован в системе, используйте GetObject для указания пути к файлу, содержащему ваш объект. Убедитесь, что ваш объект предоставляет правильный интерфейс. (Второй параметр является необязательным. Здесь вы можете указать имя класса, если ваш объект предоставляет более одного.)

Set myObject = GetObject("C:\some\path\helloworld.dll", "appname.HelloWorld")
myObject.Print
23.03.2012
  • У меня получилось только регазм и потом CreateObject. Я никогда не мог заставить GetObject работать. Я что-то упускаю? Спасибо! 22.10.2012
  • Когда я ввожу два параметра: я получил сообщение об ошибке: Компонент ActiveX не может создать объект 'GetObject'. Когда я ввожу только первый параметр: я получил: Имя файла или имя класса не найдено во время автоматизации. 07.01.2017
  • @ HighTechProgramming15 Дважды проверьте путь к файлу dll, который вы указали. 08.01.2017
  • Возможно ли это без регистрации dll? Я так не думаю. 21.08.2017
  • @BLuM Это если он предоставляет COM-интерфейс. 23.08.2017
  • Как это сделать? 16.09.2017
  • Не могли бы вы опубликовать очень простой пример (о dll и vbscript), как это сделать без необходимости регистрировать dll? 09.02.2018
  • @kampi Уже есть. См. Вторую часть ответа. 10.02.2018
  • @Nilpo: ты прав, но я имел в виду сторону DLL. Не могли бы вы опубликовать образец кода внутри DLL? Меня интересует способ GetObject (dll без регистрации) Или надо внести какие-то изменения? Я всегда получаю сообщение об ошибке, описанное в предыдущих комментариях. 11.02.2018
  • У меня те же результаты, что и у @ HighTechProgramming15, и я не могу получить рабочий результат с помощью GetObject, но регистрация DLL работает. Должно быть что-то еще? 05.08.2019
  • @Nilpo Я пытаюсь внедрить VBScript в другое приложение и получаю ошибку ‹'CreateObject' не объявлен. Он может быть недоступен из-за уровня защиты. ›. Ошибка такая же и при попытке "GetObject". Есть идеи, как это решить? 04.05.2020

  • 2

    Думаю, вы ищете COM без регистрации. Этот SO-ответ относительно Microsoft.Windows.ActCtx должен помочь специально для VBScript.

    Имейте в виду, что COM не поддерживает статические методы, поэтому вам придется превратить свой метод Print в метод экземпляра.

    24.03.2012

    3

    Как вызвать .NET DLL из VBScript

    23.03.2012
  • Хорошо, вот как зарегистрировать DLL на сервере / системе в целом, но как мне напрямую объявить / вызвать dll в VBScript? Я прочитал ссылку ниже, которая, кажется, говорит, что это возможно, но как бы это выглядело, если бы это было для статического метода класса? support.microsoft.com/kb/106553 23.03.2012
  • ваша ссылка говорит о Visual Basic. не vbscript. и на ваш вопрос уже дан ответ: stackoverflow.com/a/769346/736170 23.03.2012
  • Эта ссылка не отвечает на мой вопрос. И приносим свои извинения за языковую путаницу. Мне это нужно для VBScript, но я предполагал, что будет аналогичный процесс. Я хочу вызвать dll из моего скрипта без регистрации на сервере. Он должен динамически загружаться во время выполнения из пути к файлу. 23.03.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..