@ Визуал Винсент Отредактировано. Должно работать в обоих направлениях (вам не нужно заботиться о том, используете ли вы объект синхронизации или нет). Любые дальнейшие предложения с вашей стороны приветствуются :)
олся с этим всю неделю, поэтому я надеюсь, что эксперты здесь могут помочь мне. У меня есть исполняемый файл, который обязательно должен быть запущен из командной строки с аргументами. Я пытаюсь вместо того, чтобы запустить окно командной строки, я хотел бы отправить данные в поле расширенного текста в моей форме.
Если я настрою командный файл и запустю командный файл с правильным кодом (запустив его как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