Вызов функции в консольном приложении из VBScript - PullRequest
2 голосов
/ 25 января 2012

У меня есть консольное приложение, myapp.exe. Внутри приложения есть функция, давайте назовем ее:

public static int AddIntegers(int a, int b)

Можно ли сделать эту функцию видимой снаружи, чтобы VBscript мог ее вызывать? Нужно ли переместить функцию в DLL или я могу оставить ее в EXE и сделать ее видимой? Если да, то как?

Ответы [ 2 ]

3 голосов
/ 26 января 2012

В идеале, вы должны создать DLL и установить Com Visible для функций, которые вам нужно предоставить.

using System;
using System.Runtime.InteropServices;
namespace MyDLL
{
   [ComVisible(true)]
   public class Operations
   {
       [ComVisible(true)]
       public int AddIntegers(int a, int b)
       {
           return a + b;
       }
    }
}

После того, как вы скомпилировали свою DLL, вам нужно зарегистрировать ее с помощью regasm.exe, чтобы вы могли вызывать ее из VBScript:

Dim myObj
Set myObj = CreateObject("MyDLL.Operations")
Dim sum
sum = myObj.AddIntegers(3, 5)

Этот ответ основан на публикации CodeProject Как вызвать .NET DLL из VBScript от Raymund Macaalay. Я рекомендую вам прочитать это.

Кроме того, вы должны проверить другие публикации стекового потока, такие как Как вызвать функцию C # DLL из VBScript .

2 голосов
/ 25 января 2012

Да, вам нужно сделать библиотеку управляемого кода (DLL) видимой для VBScript (скорее всего, через GAC). Затем в вашем VBScript вы можете сделать что-то вроде:

dim yourObject = CreateObject("YourContainingObject");
yourObject.AddIntegers yourFirstInt, yourSecondInt
...