2017-09-29 24 views
3

私が持っているMyScript.vbsで、次のVBScriptコード:私はそうのように、PowerShellコマンドラインから呼び出すのVBScriptのGetObject()

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

cscript MyScript.vbs //I 

これは期待どおり動作します。 myAppは私が探しているプロセスに設定されており、私はそれとやりとりすることができます。ここで

は同じことをしようとするいくつかのC#コードです:私は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; 

、VBScriptのはのGetObject()の呼び出しに失敗しました。同様のSOの質問があり、私は彼らの提案を試みました。 1つの提案は、32ビット版または64ビット版のcscriptを明示的に呼び出すことでした。しかし、どちらもうまくいきませんでした。

これはいつも問題ではありません。このコードは数年前のことであり、これまでも働いていました。 Visual Studio 2017のアップデートによって何とかこの問題が発生した可能性があります。私は現在、バージョン15.3.5を実行しています。

私は1週間この問題に立ち往生していますので、何か助けに感謝します!

+2

"C#コードを実行すると、GetObject()呼び出しでVBScriptが失敗します。"精巧? – itsme86

+0

VBScriptエラーは、 "ActiveXコンポーネントはオブジェクトを作成できません: 'GetObject'です。しかし、私はVisual Studioを再インストールして問題を解決しました。私は以下でさらに説明します。 – polyrhythms

答えて

0

問題はVisual Studio 2017で、おそらく15.3以降のアップデートを取得した結果です。同じコードがVS 2015 Update 3で正常に機能します。