Определить по порту имя программы - Visual Basic .NET
Формулировка задачи:
Всем добра.
Как мне определить программу по порту на своем ПК?
Вожу в TextBox1 порт (заранее уже известно что он открыт) жму кнопку и происходит вывод имени программы которая использует этот порт в TextBox2.
Что то на подобии консольной команды
netstat
Например проверяю порт открыт/закрыт так:Поиск не дал результата.
Заранее спасибо.
Решение задачи: «Определить по порту имя программы»
textual
Листинг программы
Imports System.Text.RegularExpressions Public Class Form1 Public Function Dos_Win(ByVal DosStr As String) As String Dim bytes_in() As Byte Dim bytes_out() As Byte bytes_in = System.Text.Encoding.GetEncoding(1251).GetBytes(DosStr) bytes_out = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(866), System.Text.Encoding.GetEncoding(1251), bytes_in) Dos_Win = System.Text.Encoding.GetEncoding(1251).GetString(bytes_out) End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ListBox1.Items.Clear() Dim connect As System.Diagnostics.Process connect = New System.Diagnostics.Process() Dim arg As String = "netstat -a -n -o -p TCP" 'команда для получения списка connect.StartInfo.FileName = "C:\Windows\System32\cmd.exe" connect.StartInfo.Arguments = "/k " & arg connect.StartInfo.WindowStyle = ProcessWindowStyle.Hidden connect.StartInfo.UseShellExecute = False connect.StartInfo.RedirectStandardOutput = True connect.StartInfo.CreateNoWindow = True connect.Start() 'запускаем Dim result As String = connect.StandardOutput.ReadToEnd ' перенаправляем вывод connect.WaitForExit() Dim res() As String = Split(Dos_Win(result), vbCrLf) ' полученную строку пилим по строкам и заполняем listbox For i = 0 To res.Count - 1 ListBox1.Items.Add(res(i)) Next Dim res_string As String = "" For i = 0 To ListBox1.Items.Count - 1 ListBox1.SelectedIndex = i Dim sel As String = ListBox1.SelectedItem If sel.Contains(":" & TextBox1.Text & " ") Then 'если выбранный элемент содержит введенный порт res_string = ListBox1.SelectedItem Dim nums() As String = (From M As Match In Regex.Matches(res_string, "\d+") Select M.Groups(0).Value).ToArray() ' заполняем массив nums всеми найденными числами TextBox2.Text = nums(nums.Count - 1) 'пишем в textbox2 последнее найденное число в строке это будет pid обьекта Dim localById As Process = Process.GetProcessById(TextBox2.Text) TextBox3.Text = localById.ProcessName ' пишем в textbox3 имя процесса, найденного по pid End If Next End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д