📄 form1.vb
字号:
Imports System.Diagnostics
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'在 InitializeComponent() 调用之后添加任何初始化
'把ListAllProcesses方法添加到构造方法中
ListAllProcesses()
End Sub
'窗体重写处置以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意:以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents ListView1 As System.Windows.Forms.ListView
Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader
Friend WithEvents ColumnHeader5 As System.Windows.Forms.ColumnHeader
Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem
Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.ListView1 = New System.Windows.Forms.ListView()
Me.ColumnHeader1 = New System.Windows.Forms.ColumnHeader()
Me.ColumnHeader2 = New System.Windows.Forms.ColumnHeader()
Me.ColumnHeader3 = New System.Windows.Forms.ColumnHeader()
Me.ColumnHeader4 = New System.Windows.Forms.ColumnHeader()
Me.ColumnHeader5 = New System.Windows.Forms.ColumnHeader()
Me.MainMenu1 = New System.Windows.Forms.MainMenu()
Me.MenuItem1 = New System.Windows.Forms.MenuItem()
Me.MenuItem2 = New System.Windows.Forms.MenuItem()
Me.MenuItem3 = New System.Windows.Forms.MenuItem()
Me.SuspendLayout()
'
'ListView1
'
Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2, Me.ColumnHeader3, Me.ColumnHeader4, Me.ColumnHeader5})
Me.ListView1.Dock = System.Windows.Forms.DockStyle.Fill
Me.ListView1.MultiSelect = False
Me.ListView1.Name = "ListView1"
Me.ListView1.Size = New System.Drawing.Size(360, 273)
Me.ListView1.TabIndex = 0
Me.ListView1.View = System.Windows.Forms.View.Details
'
'ColumnHeader1
'
Me.ColumnHeader1.Text = "名称"
'
'ColumnHeader2
'
Me.ColumnHeader2.Text = "ID"
'
'ColumnHeader3
'
Me.ColumnHeader3.Text = "线程数"
'
'ColumnHeader4
'
Me.ColumnHeader4.Text = "CPU时间"
Me.ColumnHeader4.Width = 77
'
'ColumnHeader5
'
Me.ColumnHeader5.Text = "内存使用"
Me.ColumnHeader5.Width = 98
'
'MainMenu1
'
Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem1, Me.MenuItem2, Me.MenuItem3})
'
'MenuItem1
'
Me.MenuItem1.Index = 0
Me.MenuItem1.Text = "创建进程"
'
'MenuItem2
'
Me.MenuItem2.Index = 1
Me.MenuItem2.Text = "结束进程"
'
'MenuItem3
'
Me.MenuItem3.Index = 2
Me.MenuItem3.Text = "刷新列表"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(360, 273)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListView1})
Me.Menu = Me.MainMenu1
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub ListAllProcesses()
Dim processName As String
Dim processID As Int16
Dim threadsNumber As Int16
Dim cputime As TimeSpan
Dim processMemory As Int32
'清除列表视图中原有的内容
ListView1.Items.Clear()
'获取当前系统中的所有进程
Dim processes() As Process = Process.GetProcesses()
'在列表中加入每个进程项目
Dim i As Int16
For i = 0 To processes.Length - 1
processName = processes(i).ProcessName
processID = processes(i).Id
threadsNumber = processes(i).Threads.Count
cputime = processes(i).TotalProcessorTime
processMemory = processes(i).WorkingSet
Dim subItems(4) As String
subItems(0) = CStr(processName)
subItems(1) = CStr(processID)
subItems(2) = CStr(threadsNumber)
subItems(3) = String.Format("{0:00}:{1:00}:{2:00}", _
cputime.Hours, cputime.Minutes, cputime.Seconds)
subItems(4) = String.Format("{0:#,#,#}k", processMemory / 1024)
'插入一行项目
ListView1.Items.Insert(i, New ListViewItem(subItems))
Next
End Sub
Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
ListAllProcesses()
End Sub
Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
'构造打开的文件对话框
Dim ofDlg As OpenFileDialog
ofDlg = New OpenFileDialog()
'选择可执行文件
ofDlg.Filter = "All Executables(*.exe)|*.exe"
'显示对话框
If ofDlg.ShowDialog() = DialogResult.OK Then
Try
'启动选择的程序
Dim newProcess As Process
newProcess = Process.Start(ofDlg.FileName)
newProcess.EnableRaisingEvents = True
'指定退出事件方法
AddHandler newProcess.Exited, AddressOf onProcessExited
Catch excep As ArgumentException
MessageBox.Show(excep.Message, "参数错误", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End Sub
Public Sub onProcessExited(ByVal sender As Object, ByVal e As System.EventArgs)
ListAllProcesses()
End Sub
Private Sub MenuItem2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem2.Click
If (ListView1.SelectedItems.Count > 0) Then
'获取选中项目中的ID值
Dim processID As Int32
processID = Int32.Parse(ListView1.SelectedItems(0).SubItems(1).Text)
'根据ID获取进程
Dim selectedProcess As Process
selectedProcess = Process.GetProcessById(processID)
'设置进程终止时激发Exited事件
selectedProcess.EnableRaisingEvents = True
AddHandler selectedProcess.Exited, AddressOf onProcessExited
'如果进程还没有退出
If (Not selectedProcess.HasExited) Then
'如果关闭主窗口失败
If (Not selectedProcess.CloseMainWindow()) Then
'提示是否终止进程
If (MessageBox.Show("不能关闭应用程序窗口,需要继续终止进程吗?", _
"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = _
DialogResult.OK) Then
Try
'终止进程
selectedProcess.Kill()
Catch excep As Exception
MessageBox.Show(excep.Message, "不能结束进程", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End If
Else
MessageBox.Show("选中的进程已经退出!", "提示", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
ListAllProcesses()
End If
Else
MessageBox.Show("请先选中一个当前正在运行的进程!", "提示", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -