如果从C#WPF应用程序调用VBScript GetObject()不起作用

时间:2017-09-29 21:14:36

标签: c# wpf vbscript

我在MyScript.vbs中有以下VBScript代码:

Dim myApp    
Set myApp = GetObject(,"ViewDraw.Application")

我从PowerShell命令行调用它,如下所示:

cscript MyScript.vbs //I

这按预期工作; myApp已设置为我正在寻找的流程,并且我可以与之互动。

这里有一些试图做同样事情的C#代码:

var script = new Process();
script.StartInfo.FileName = "cscript";
script.StartInfo.Arguments = @"<MyWorkingFolder>\MyScript.vbs //I";

script.StartInfo.CreateNoWindow = true;
script.StartInfo.RedirectStandardOutput = true;
script.StartInfo.UseShellExecute = false;
script.Start();

//Read anything sent out by program
string output = script.StandardOutput.ReadToEnd();

script.WaitForExit();

VBScriptResult result = new VBScriptResult();
result.returnCode = script.ExitCode;
result.stdOut = output;
return result;

当我执行C#代码时,VBScript在GetObject()调用上失败。有类似的SO问题,我已经尝试了他们的建议。一个建议是显式调用32位或64位版本的cscript。但是,两者都没有奏效。

这一直不是问题。该代码现在已有几年的历史,并且过去曾有过工作。 Visual Studio 2017的更新可能会以某种方式导致此问题。我目前正在运行15.3.5版。

我已经坚持这个问题一个星期了,所以非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

问题出在Visual Studio 2017上,可能是更新15.3或更高版本的结果。相同的代码在VS 2015 Update 3中运行良好。