我有以下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。 我已经被这个问题困扰了一个星期,所以任何帮助都非常感激!