Вопрос о возврате значений из VBScript в .NET - PullRequest
0 голосов
/ 07 июня 2010

Я пытаюсь настроить приложение, способное запускать файлы VBScript из .NET (см. здесь ), и у меня большая часть настроена нормально, но я хочу проверить это, поэтому янужно иметь возможность возвращать данные из моих VBScripts.Я обнаружил, что могу использовать WScript.Quit ([ErrorCode]), чтобы получить целочисленное значение, но как насчет возврата строк?Можно ли передать их в DataReceivedEventHandler?Или мне нужно посмотреть на другой метод?Спасибо.

1 Ответ

2 голосов
/ 07 июня 2010

Вы можете записать в стандартный вывод (который перенаправит его в обработчик событий). Я верю в VBScript, это WScript.Stdout.

Если у вас написано несколько строк, вы можете использовать что-то вроде StringWriter для захвата их всех, то есть

        var p = new Process()
        {
            StartInfo = new ProcessStartInfo("netstat")
            {
                RedirectStandardOutput = true,
                RedirectStandardError = true,
                UseShellExecute = false,
            }
        };

        var outputWriter = new StringWriter();
        p.OutputDataReceived += (sender, args) => outputWriter.WriteLine(args.Data);

        var errorWriter = new StringWriter();
        p.ErrorDataReceived += (sender, args) => errorWriter.WriteLine(args.Data);

        p.Start();
        p.BeginOutputReadLine();
        p.BeginErrorReadLine();     
        p.WaitForExit();

        if (p.ExitCode == 0)
        {
            Console.WriteLine(outputWriter.GetStringBuilder().ToString());
        }
        else
        {
            Console.WriteLine("Process failed with error code {0}\nMessage Was:\n{1}", p.ExitCode
                , errorWriter.GetStringBuilder().ToString());
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...