В данном уроке мы попытаемся сделать простейший Диспетчер
задач.
Программа будет выполнять только два действия
получать список запущеных процессов;
завершать выбраный процесс.
И так начнём!
Создаем проект и добавляем на форму следующее
- label1 - пояснение к программе
statusStrip1 - нижняя панель программы
tslProcessCount - ToolStripStatusLabel, создаетсяы в компоненте
statusStrip1, будет выводить кол-во процессов
upd_procc_button - кнопка для обновления списка процессов
btnKill - кнопка для завершения выбраного процесса
proc_list - ListBox - будет содержать список процессов
Теперь начнем писать код.
Перво что нам нужно - это получить список процессов и
записать их в ListBox, для удобства запишем это в процедуру
(sub) с именем Proc_list.
Теперь чтобы получить или обновить список процессов нам
достаточно вызвать Proc_list()
Код
Private Sub Proc_list()
' Очищаем список процессов
proc_list.Items.Clear()
' Заполняем список процессов
Dim p As System.Diagnostics.Process
For Each p In System.Diagnostics.Process.GetProcesses()
proc_list.Items.Add(p.ProcessName & " - " & p.Id.ToString())
Next
'Сортируем
proc_list.Sorted = True
' Отображаем число запущеных процессов
tslProcessCount.Text = "Запущено процессов: " & _
proc_list.Items.Count.ToString()
End Sub
Теперь для того чтобы получить список процессов при запуске
программы вызовим эту процедуру при событии form_Load
Код
Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Proc_list()
End Sub
Тоже самое и для кнопки обновить, для обновления в ручном режиме.
Код
Private Sub upd_procc_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles upd_procc_button.Click
Proc_list()
End Sub
Последнее.
Для кнопки завершение процесса добавим следующий код.
Код
Private Sub btnKill_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKill.Click
Try 'Обрабатуем ошибки, если процесс не получится завершить
If proc_list.SelectedItems.Count <= 0 Then
MsgBox("Выберите нужный вам процесс", MsgBoxStyle.Critical, "Ничего не выбрано")
Return
End If
' Ищем процесс по имени и Id и убиваем
Dim p As System.Diagnostics.Process
For Each p In System.Diagnostics.Process.GetProcesses()
Dim arr() As String = _
proc_list.SelectedItem.ToString().Split("-")
Dim sProcess As String = arr(0).Trim()
Dim iId As Integer = Convert.ToInt32(arr(1).Trim())
'Если имя и Id совпадают
If p.ProcessName = sProcess And p.Id = iId Then
'Убиваем процесс
p.Kill()
End If
Next
' Обновляем список процессов
Proc_list()
Catch ex As Exception
'Выдаем сообщение об ошибке если такова есть!
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical, "Ошибка")
End Try
End Sub
В следующих уроках мы будем усовершенствовать наш диспетчер задач!