2017-09-29 2 views
3

J'ai le code VBScript suivant dans myscript.vbs:VBScript GetObject() ne travaillant pas si elle est appelée application C# WPF

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

Je l'appelle à partir d'une ligne de commande PowerShell, comme ceci:

cscript MyScript.vbs //I 

Cela fonctionne comme prévu; myApp est configuré pour le processus que je recherche et je suis capable d'interagir avec elle.

est ici un code C# qui tente de faire la même chose:

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; 

Quand j'exécute le code C#, le VBScript échoue sur l'appel GetObject(). Il y a eu des questions de SO similaires, et j'ai essayé leurs suggestions. Une suggestion consistait à appeler explicitement la version 32 bits ou 64 bits de cscript. Ni travaillé, cependant.

Cela n'a pas toujours été un problème. Le code a maintenant deux ans et a déjà fonctionné par le passé. Il est possible qu'une mise à jour de Visual Studio 2017 ait causé ce problème. Je cours actuellement la version 15.3.5.

Je suis bloqué sur cette question depuis une semaine maintenant, donc toute aide est grandement appréciée!

+2

"Lorsque j'exécute le code C#, le VBScript échoue sur l'appel GetObject()." Élaborer? – itsme86

+0

L'erreur VBScript était "Le composant ActiveX ne peut pas créer l'objet: 'GetObject'". Cependant, j'ai corrigé le problème en réinstallant Visual Studio. Je vais expliquer plus ci-dessous. – polyrhythms

Répondre

0

Le problème est avec Visual Studio 2017, probablement dû à la mise à jour 15.3 ou ultérieure. Le même code fonctionne correctement dans VS 2015 Update 3.