WiesneRobert Geschrieben 29. Mai 2008 Teilen Geschrieben 29. Mai 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WiesneRobert Geschrieben 30. Mai 2008 Autor Teilen Geschrieben 30. Mai 2008 naja, habs mittlerweile selber herausgefunden ein WScript.Quit() am ende der VBscript hat geholfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hubibi Geschrieben 1. Juni 2008 Teilen Geschrieben 1. Juni 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WiesneRobert Geschrieben 3. Juni 2008 Autor Teilen Geschrieben 3. Juni 2008 Danke, wird morgen direkt mal getestet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WiesneRobert Geschrieben 4. Juni 2008 Autor Teilen Geschrieben 4. Juni 2008 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hubibi Geschrieben 5. Juni 2008 Teilen Geschrieben 5. Juni 2008 Gar nicht! Das "WScript" Objekt wird von der wscript.exe erzeugt! Nutze doch statt WScript.Echo ein MsgBox, oder bastle dir dein eigenes COM-Objekt mit Hilfsfunktion und füge es über "AddObject" hinzu! mfg Hubibi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WiesneRobert Geschrieben 5. Juni 2008 Autor Teilen Geschrieben 5. Juni 2008 Habe mir die Möglichkeiten über MSScriptControl & AddObject mal angesehen. Das ganze ist für meine Vorhaben leider nicht praktikabel. Letztendlich soll jedes VBScript (sofern es fehlerfrei ist) ausgeführt werden können, ohne vorher zu wissen was oder wie es etwas macht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hubibi Geschrieben 6. Juni 2008 Teilen Geschrieben 6. Juni 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.