У меня есть программа VB.net, в которой я вызываю функцию Shell. Я хотел бы получить текстовый вывод, созданный из этого кода, в файл. Однако это не возвращаемое значение исполняемого кода, поэтому я действительно не знаю, как это сделать.
Эта программа является сервисом, но с доступом к диску нет проблем, так как я уже записываю другую информацию. Вся служба имеет несколько потоков, поэтому я также должен убедиться, что при записи файла к нему еще не обращались.
Вы не сможете захватить вывод из 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