2017-09-29 25 views
3

我有下面的VBScript代码在MyScript.vbs:的VBScript GetObject的()不工作如果从C#WPF应用程序称为

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问题,我已经尝试了他们的建议。一个建议是明确地调用cscript的32位或64位版本。然而,两者都没有奏效。

这并不总是一个问题。代码现在已经有几年了,并且已经在过去。对Visual Studio 2017进行更新可能会导致此问题。我目前正在运行版本15.3.5。

我一直在这个问题上停留了一周,所以任何帮助都非常感谢!

+2

“当我执行C#代码时,VBScript在GetObject()调用失败。”阐述? – itsme86

+0

VBScript错误是“ActiveX组件无法创建对象:'GetObject'”。但是,我通过重新安装Visual Studio解决了问题。我会在下面解释更多。 – polyrhythms

回答

0

问题在于Visual Studio 2017,可能是更新15.3或更高版本的结果。相同的代码在VS 2015更新3中正常工作。

相关问题