从C# WPF应用程序调用VBScript GetObject()无法工作

3

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

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

我会从PowerShell命令行中调用它,就像这样:

cscript MyScript.vbs //I

这个工作效果符合预期,我的应用程序设置为我正在查找的进程,我可以与它进行交互。

下面是一些试图实现同样功能的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。

我已经被这个问题困扰了一个星期,所以任何帮助都非常感激!

2
当我执行C#代码时,VBScript在GetObject()调用上失败了。能详细说明一下吗? - itsme86
VBScript错误是“ActiveX组件无法创建对象:'GetObject'”。然而,我通过重新安装Visual Studio解决了这个问题。我将在下面进行更详细的说明。 - polyrhythms
1个回答

0
问题出在Visual Studio 2017上,可能是由于安装了15.3或更高版本的更新。相同的代码在VS 2015 Update 3中可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接