Jak wywołać plik VBScript w aplikacji C#?

I need to call a VBScript file (.rozszerzenie pliku vbs) w mojej aplikacji C # Windows. Jak mogę to zrobić?

Istnieje dodatek umożliwiający dostęp do pliku VBScript w Visual Studio. Ale muszę mieć dostęp do skryptu z tyłu. Jak to zrobić?

Author: Peter Mortensen, 2008-10-14

5 answers

Poniższy kod uruchomi skrypt VBScript bez monitów lub błędów i bez logo powłoki.

System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\scripts\vbscript.vbs");

Bardziej złożoną techniką byłoby użycie:

Process scriptProc = new Process();
scriptProc.StartInfo.FileName = @"cscript"; 
scriptProc.StartInfo.WorkingDirectory = @"c:\scripts\"; //<---very important 
scriptProc.StartInfo.Arguments ="//B //Nologo vbscript.vbs";
scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //prevent console window from popping up
scriptProc.Start();
scriptProc.WaitForExit(); // <-- Optional if you want program running until your script exit
scriptProc.Close();

Korzystanie z właściwości StartInfo da ci dość szczegółowy dostęp do ustawień procesu.

Musisz użyć Windows Script Host jeśli chcesz windows, itp. do wyświetlenia przez program skryptowy. Możesz również spróbować wykonać cscript bezpośrednio, ale na niektórych systemach po prostu uruchomi edytor :)

 59
Author: Ilya Kochetov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-15 01:24:37

Innym podejściem jest stworzenie VB.NET Class Library project, skopiuj kod VBScript do VB.NET plik klasy, i odwoływać się do VB.NET Biblioteka klas z twojego programu C#.

Będziesz musiał naprawić wszelkie różnice między Vbscriptem a VB.NET (powinno być kilka).

Zaletą jest to, że będziesz uruchamiał kod w procesie.

 4
Author: condiosluzverde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-07 14:55:12

To jest problem z uprawnieniami. Aplikacja appPool musi być uruchomiona na najwyższym poziomie uprawnień, aby to zrobić w 2008 roku. Tożsamość musi być administratorem.

 3
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-28 16:35:39

Masz na myśli, że próbujesz uruchomić plik vbs z C#?

Można to zrobić tak jak uruchamianie dowolnego innego programu z kodu C# :

Process.Start(path);

Ale musisz się upewnić, że nie poprosi o nic, i działa z wersją wiersza poleceń interpretera:

Process.Start("cscript path\\to\\script.vbs");
 2
Author: Biri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 08:56:46

Dla dobra poszukiwaczy, znalazłem ten post, który daje jasną odpowiedź (esp jeśli masz parametry). Przetestowałem go-wydaje się działać dobrze.

string scriptName = "myScript.vbs"; // full path to script
int abc = 2;
string name = "Serrgggio";

ProcessStartInfo ps = new ProcessStartInfo();
ps.FileName = "cscript.exe";
ps.Arguments = string.Format("\"{0}\" \"{1}\" \"{2}\"", scriptName, abc, name);
//This will equate to running via the command line:
// > cscript.exe "myScript.vbs" "2" "Serrgggio"
Process.Start(ps);
 1
Author: HockeyJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-27 10:10:37