這是我的C#程序:C#失敗
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):無效 過程調用o在 MSScriptControl.IScriptControl.Runř參數在 (字符串PROCEDURENAME,對象[] & 參數)在Srcipting.Program.CallVbsFunction(檢體P)的Program.cs
單引號版本傳遞'char' wheres,因爲雙引號傳遞'string' wh ich是_array_的字符 –
是的我的問題是當我使用String時,我知道VBScript使用VARIANT和BSTR,如果我調用MsgBox typename(myguid)返回「String」但不起作用。 – themadmax
如果您使用'sc.AddObject(「myguid」,p [0],false);' –