Zum Inhalt springen

VBScript - aus .NET Anwendung Starten


WiesneRobert

Empfohlene Beiträge

Hallo Community ;)

Ich versuche von einem .NET Programm ein VBScript zu starten. Soweit kein Problem, jedoch bekomme ich nicht mit wenn der Prozess beendet ist. Das Script läuft durch, jedoch bleibt der Prozess cscript.exe hängen.[


using System.Diagnostics;


ProcessStartInfo psi = new ProcessStartInfo("cscript.exe");

Process process = new Process();

psi.UseShellExecute = false;

psi.Arguments ="script.vbs"

process.StartInfo = psi;


try

{

            if (process.Start()) //Prozess starten

            {



                if (process.WaitForExit(60000)) //60 Sekunden warten

                {

                    //Prozess wurde in der Zeitspanne beendet

                }

                else

                {

                    //Prozess läuft noch

                }

}

Ich fliege immer in die Else, obowohl das vbscript komplett durchgelaufen ist, bleibt der prozess cscript.exe im Task-Manager bestehen und wird nicht beendet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo WiesneRobert,

ich würde dir empfehlen nicht das Script über einen extra Prozess aufzurufen, sondern das WScript ActiveX Objekt in deine Anwendung einzubinden!

Einfach "Add Reference -> COM -> WScript", dann hast du eine Objekt in deiner Anwendung, mit dem wesentlich mehr Kontrolle über deine Scripts hast!

mfg Hubibi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Muss mir leider selber antworten ;)

Habe das Microsoft MSScriptControl (ActiveX) Object eingebunden, jedoch glaube ich nicht, dass es für meinen Zweck geeignet ist.

Ich habe versucht ein bestehendes Script einzulesen und über AddCode hinzuzufügen:


MSScriptControl.ScriptControl x = new MSScriptControl.ScriptControl();

x.Language = "vbscript";


String scr ="hello.vbs";

try

{

using (StreamReader sr = new StreamReader(scr))

{

x.AddCode(sr.ReadToEnd());

}

 }

catch (Exception e)

{

Console.WriteLine(e.Message);

}

Das Programm fliegt mit der Exception: Variable is undefined: 'Wscript' bei ScriptControl.ScriptControlClass.AddCode(String Code) raus. Das Script hello.vbs besteht lediglich aus der Zeile

WScript.Echo "Hello world"

Wie kann ich erreichen, dass WScript bekannt ist?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja wenn es dir wirklich nur um das Ausführen reiner Benutzerscripte geht, kannst du das ruhig mit einem extra Prozess machen!

Das MSScriptControl solltest du aber immer dann verwenden wenn du Kontroll über das Script haben willst. Ich habe z.B. eine Anwendung in der der Benutzer ein beliebiges Script ausführen kann, diesem Script gebe ich vorher mit AddObject ein Objekt mit, aus welchem ich dann im nachhinein den Rückgabewert des Scriptes auslese!

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...