Получить вывод команды оболочки в VB.net

У меня есть программа VB.net, в которой я вызываю функцию Shell. Я хотел бы получить текстовый вывод, созданный из этого кода, в файл. Однако это не возвращаемое значение исполняемого кода, поэтому я действительно не знаю, как это сделать.

Эта программа является сервисом, но с доступом к диску нет проблем, так как я уже записываю другую информацию. Вся служба имеет несколько потоков, поэтому я также должен убедиться, что при записи файла к нему еще не обращались.

17
задан Ross Ridge 14 July 2017 в 14:43
поделиться

1 ответ

Вы не сможете захватить вывод из Shell.

Вам нужно будет изменить это на процесс, и вам нужно будет захватить потоки Standard Output (и, возможно, Error) из процесса.

Вот пример:

        Dim oProcess As New Process()
        Dim oStartInfo As New ProcessStartInfo("ApplicationName.exe", "arguments")
        oStartInfo.UseShellExecute = False
        oStartInfo.RedirectStandardOutput = True
        oProcess.StartInfo = oStartInfo
        oProcess.Start()

        Dim sOutput As String
        Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
            sOutput = oStreamReader.ReadToEnd()
        End Using
        Console.WriteLine(sOutput)

Чтобы получить стандартную ошибку:

'Add this next to standard output redirect
 oStartInfo.RedirectStandardError = True

'Add this below
Using oStreamReader As System.IO.StreamReader = checkOut.StandardError
        sOutput = oStreamReader.ReadToEnd()
End Using
29
ответ дан 30 November 2019 в 11:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: