@ Визуал Винсент Отредактировано. Должно работать в обоих направлениях (вам не нужно заботиться о том, используете ли вы объект синхронизации или нет). Любые дальнейшие предложения с вашей стороны приветствуются :)

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

Если я настрою командный файл и запустю командный файл с правильным кодом (запустив его какProcess), это работает без проблем. Тем не менее, я бы хотел, чтобы пользователь мог вводить свои собственные аргументы вTextBox вместо создания командного файла и ссылки на него.

Я могу только заставить это приложение правильно работать с помощью Call Shell. Тем не менее, я прочитал, что вы не можете вывести данные наRichTextBox если вы используете Call Shell и что он должен быть настроен как новыйProcess, Я просто не могу заставить это работать какProcess.

Таким образом, вопрос в том, можно ли каким-то образом вывести данные Call Shell вRichTextBox контроль, или есть способ заставить эту вещь работать как процесс? Приведенный ниже код Visual Basic заставит его работать, но не выведет наRichTextBox, Я удалил любой код, который попробовал, потому что каждая попытка была неудачной.

Эта кнопка запуститProcessили еслиProcess работает, это убьет его.

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim exeargs As String = txtExeArgs.Text
    Dim p1() As Process
    Dim strCommand As String = "executable.exe " & exeargs & ""
    p1 = Process.GetProcessesByName("executable")
    Dim exepath As String = IO.Path.GetDirectoryName(Me.txtExeLocation.Text)

    If p1.Count <= 0 Then

        RichTextBox1.Clear()

        Call Shell("cmd.exe /c cd /d " & exepath & " & " & strCommand, 0)

    Else
        Dim killprocess = System.Diagnostics.Process.GetProcesses().Where((Function(p) p.ProcessName = "executable"))
        For Each p As Process In killprocess
            p.Kill()
        Next
        RichTextBox1.Clear()
    End If
End Sub

Ответы на вопрос(1)

Ваш ответ на вопрос