Ответить на вопрос программы командной строки в VB.net - PullRequest
0 голосов
/ 16 июня 2011

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

Dim sqliProcess As New Process()
sqliProcess.StartInfo.UseShellExecute = False
sqliProcess.StartInfo.RedirectStandardOutput = True
sqliProcess.StartInfo.RedirectStandardError = True
sqliProcess.StartInfo.FileName = "C:\shell_program.exe"
sqliProcess.StartInfo.CreateNoWindow = True
sqliProcess.Start()

Do While Not bw.CancellationPending
    Try
        If Not sqliProcess.StandardOutput.EndOfStream Then
            Debug.Print(sqliProcess.StandardOutput.ReadLine)
        End If
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical, "Error reading output")
    End Try

    Threading.Thread.Sleep(1)
Loop

, которая работает и распечатывает все выходные данные программы командной строки.Однако в какой-то момент программа командной строки запрашивает взаимодействие с пользователем, например:

Type a number (1/2/3/4):

Но программа командной строки останавливается после этого.Я подозреваю, что это потому, что он не получает допустимую опцию.

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

1 Ответ

0 голосов
/ 16 июня 2011

Это не так сложно, если вы используете события. (Не забудьте включить EnableRaisingEvents). Посмотрите здесь на outputdatareceived. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...