⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.vb

📁 适合VB初学者看
💻 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 + -