我在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版。
我已经坚持这个问题一个星期了,所以非常感谢任何帮助!
答案 0 :(得分:0)
问题出在Visual Studio 2017上,可能是更新15.3或更高版本的结果。相同的代码在VS 2015 Update 3中运行良好。