Member 12823823 Ответов: 1

Форма управления Cmd VB.NET


запустите сеанс cmd в форме windows с помощью команды " ipconfig"
но покажите ошибку на FnctionStartConsoleEvent
кто-нибудь мне поможет?

Что я уже пробовал:

Dim cdd() As String
    Event Avvia()
    Function FnctionStartConsoleEvent(e As KeyEventArgs) As EventHandler(Of ComboBox.ObjectCollection)
        If e.KeyData = Keys.Enter Then
            Dim process As Process = New Process
            With process
                '  .StartInfo.ErrorDialog = False
                .StartInfo.RedirectStandardInput = True
                .StartInfo.RedirectStandardOutput = True
                .StartInfo.UseShellExecute = False
                .StartInfo.FileName = "cmd.exe"
                .StartInfo.CreateNoWindow = True
                .StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            End With
            process.Start()
            Try
                process.StandardInput.WriteLine("cd/d " & cdd(3))
            Catch
            End Try
            process.StandardInput.WriteLine(ComboBox1.Text)
            process.StandardInput.WriteLine("echo [~cd~]%cd%[~cd~]")
            process.StandardInput.WriteLine("exit")
            Dim outpp As New TextBox
            outpp.Text = process.StandardOutput.ReadToEnd
            cdd = Split(outpp.Text, "[~cd~]")

            For i = 4 To outpp.Lines.Length - 6
                RichTextBox1.Text = RichTextBox1.Text & outpp.Lines(i).Substring(0) & vbCrLf
            Next
            ComboBox1.Items.Add(ComboBox1.Text)
            ComboBox1.Text = ""
            RichTextBox1.SelectionStart = RichTextBox1.Text.Length
            RichTextBox1.ScrollToCaret()
        End If
    End Function

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        AddHandler Avvia, AddressOf FnctionStartConsoleEvent
        If ComboBox1.SelectedText = "ipconfig" Then
            RaiseEvent Avvia()
        End If
    End Sub

[no name]

Может быть. Но мы не можем читать твои мысли. Мы бы понятия не имели, какая из возможных ошибок 54365654745676 существует, которую вы решили получить.

Wendelius

Пожалуйста, опубликуйте точное сообщение об ошибке, которое вы получите, и информацию о том, где оно было выброшено.

Member 12823823

s22.postimg.org/ym6rsx5cx/ddd.jpg

Richard MacCutchan

Это не сообщение об ошибке.

1 Ответов

Рейтинг:
4

Richard Deeming

Первая проблема:
У вас есть событие, которое ожидает нулевых аргументов.

Вы пытаетесь добавить метод обработчика, который ожидает один аргумент-a KeyEventArgs пример.

Обработчик событий ДОЛЖЕН сопоставьте сигнатуру события, которое они обрабатывают. Если они этого не сделают, вы получите ошибку компилятора, показанную на снимке экрана.



Вторая проблема:
Вы заявили, что FnctionStartConsoleEvent возвращается метод обработчика событий, который будет принимать два аргумента - sender As Object и args As ComboBox.ObjectCollection.

Метод не делает ничего подобного.

Поскольку метод ничего не возвращает, VB "услужливо" вставляет a Return Nothing прежде чем функция завершится. Если вы попытаетесь использовать возвращаемое значение, то получите NullReferenceException.



Вам нужно начать все сначала и прочитать несколько руководств о том, как работают события.

События (Visual Basic)[^]
Поднимать события и реагировать на них[^]
Пошаговое руководство: объявление и создание событий (Visual Basic)[^]
Шаг за шагом: обработка событий в VB.NET[^]