Это мой C# программа:C# запустить VBScript с MSScriptControl AddObject шпагатом не удалось
class Program
{
static void Main(string[] args)
{
CallVbsFunction(1); //Work
CallVbsFunction(1.2); //Work
CallVbsFunction('a'); //Work
CallVbsFunction("a"); //!!Exception see bellow
}
private static void CallVbsFunction(object p)
{
var sc = new MSScriptControl.ScriptControl();
sc.Language = "VBScript";
sc.AllowUI = true;
try
{
sc.AddCode(System.IO.File.ReadAllText("script.vbs"));
sc.AddObject("myguid", p, false);
var parameters = new object[] { "a" };
sc.Run("test", ref parameters);
}
catch (Exception e)
{
Console.Out.WriteLine(e.ToString());
}
}
}
Мои содержание VBScript файлов:
Function Test(a)
MsgBox myguid
End Function
И, наконец, это мое исключение, когда я использую AddObject() с строка объекта:
System.Runtime.InteropServices.COMException (0x800A0005): Недопустимый вызов процедуры о г аргумент при MSScriptControl.IScriptControl.Run (String ИмяПроцедуры, Object [] & Параметров) при Srcipting.Program.CallVbsFunction (Объект р) в Program.cs
Одиночная версия кавычек передает символы 'char', поскольку двойные кавычки передают строку' string' wh ich является _array_ символов –
Да, моя проблема в том, что я использую String, я знаю, что VBScript использует VARIANT и BSTR. Если я вызываю MsgBox, имя_файла (myguid) возвращает «String», но не работает. – themadmax
Что произойдет, если вы используете 'sc.AddObject (« myguid », p [0], false);' –