Я пытаюсь понять это на протяжении большей части дня, и я не могу окунуться в эту проблему.Как открыть новую форму после завершения процесса в командной строке
У меня недостаточно знаний о предыдущем коде, но я пытаюсь исследовать, прежде чем пытаюсь что-то кодировать. У меня есть общее представление о том, как VB.net работает, но нужна помощь с моим кодом
Public Class Form1
Dim CopyFrom As String
Dim CopyTo As String
Dim RoboCopyVariables As String
Dim CopyS As String
Dim CopyE As String
Dim WaittimeTXT As String
Dim WaitTime As String
Dim RetryAttemptsTXT As String
Dim RetryAttempts As String
Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("CMD")
Private Sub RunBTN_Click(sender As Object, e As EventArgs) Handles RunBTN.Click
CopyFrom = CopyFromTXT.Text
CopyTo = CopyToTXT.Text
'All of the selections for if CopyS has been checked
If CopySFoldersCB.Checked = True Then
CopyS = " /s"
ElseIf CopySFoldersCB.Checked = False Then
CopyS = ""
End If
If CopyEFoldersCB.Checked = True Then
CopyE = " /e"
ElseIf CopyEFoldersCB.Checked = False Then
CopyE = ""
End If
If WaitTimeCB.Checked = True Then
WaittimeTXT = WaitTimeTXT1.Text
WaitTime = " /w:" & WaittimeTXT
ElseIf WaitTimeCB.Checked = False Then
WaitTime = ""
End If
If RetryAttemptsCB.Checked = True Then
RetryAttemptsTXT = RetryAttempts1.Text
RetryAttempts = " /r:" & RetryAttemptsTXT
ElseIf RetryAttemptsCB.Checked = False Then
RetryAttempts = ""
End If
RoboCopyVariables = CopyS + CopyE + WaitTime + RetryAttempts
'CommandTest.Text = "/k robocopy " + CopyFrom + " " + CopyTo + "" + RoboCopyVariables
Process.Start("CMD", "/k robocopy " + CopyFrom + " " + CopyTo + "" + RoboCopyVariables)
For Each p As Process In pProcess
p.Kill()
Next
Form2.Show()
Me.Hide()
End Sub
Private Sub CancelButton_Click(sender As Object, e As EventArgs) Handles CancelButton.Click
Me.Close()
Form2.Close
End Sub
End Class
Спасибо за помощь я получаю
Вы не можете узнать, что оно будет выполнено, если вы используете параметр/k. Вместо этого используйте/c. Или запустите его напрямую, не используя cmd.exe. Используйте событие Process.Exited для обнаружения завершения, свойство Process.SynchronizingObject, чтобы оно запускалось в потоке пользовательского интерфейса. Do * not * kill все процессы cmd.exe, вы понятия не имеете, начали ли вы их. –