2012-03-23 3 views
8

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

+1

Возможный дубликат [Как вызвать функцию DLL C# из VBScript] (http://stackoverflow.com/questions/769332/how-to-call-c-sharp-dll-function-from-vbscript) – JeffO

+0

Я сделал проверьте эту ссылку, но она не совсем подходит к тому, что я хочу. Я хочу динамически загружать dll во время выполнения через VBScript из заданного пути к файлу, а не регистрироваться на сервере. Опять же, dlls очень новы для меня, так что это может быть то, что происходит в этом ответе, я просто этого не вижу. – steventnorris

ответ

17

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

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

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

Set myObject = GetObject("C:\some\path\helloworld.dll", "appname.HelloWorld") 
myObject.Print 
+1

Спасибо! Это должно работать великолепно. – steventnorris

+3

Я только преуспел, используя regasm, а затем 'CreateObject'. Я никогда не мог сделать работу «GetObject». Я что-то упускаю? Благодаря! – bluish

+2

Когда я ввожу два параметра: У меня есть ошибка: _ ** Компонент ActiveX не может создать объект «GetObject». ** _ Когда я ввожу только первый параметр: Я получил: _ ** Имя файла или имя класса не найденный во время автоматизации. ** _ – HighTechProgramming15

0
+0

Хорошо, так вот как зарегистрировать DLL с сервером/системой в целом, но как я могу прямо объявить/вызвать dll в VBScript? Я прочитал приведенную ниже ссылку, которая, кажется, говорит, что это возможно, но как бы это объявить, если бы это было для статического метода класса? http://support.microsoft.com/kb/106553 – steventnorris

+0

Ваша ссылка рассказывает о визуальной базовой. не vbscript. и на ваш вопрос уже был дан ответ: http://stackoverflow.com/a/769346/736170 –

+0

Эта ссылка не отвечает на мой вопрос. И приношу извинения за смешение языков. Мне это нужно для VBScript, но я предположил, что будет аналогичный процесс. Я хочу вызвать dll из моего сценария без регистрации на сервере. Он должен динамически загружаться во время выполнения из пути к файлу. – steventnorris

1

Я думаю, что вы могли бы искать Registration-Free COM. Этот ответ SO в отношении Microsoft.Windows.ActCtx должен помочь специально для VBScript.

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

Смежные вопросы