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

📄 设置窗体.vb

📁 用C#编写的一个自动关机程序
💻 VB
📖 第 1 页 / 共 2 页
字号:
Imports System.Diagnostics

Public Class 设置窗体
    Private shutTime As String          '关机时间的字符串
    Private IsToday As Boolean = True   '判断是否是今天的变量
    Private delay As Integer            '延时多少秒放关机
    Private lastTime As Integer         '关机的倒计时
    Private action As String            '关机或重启或注销
    Private shellText As String         '执行的命令字符串
    Private firstShow As Boolean = True
    Private SysTime As Boolean = False
    Private autoHide As Boolean = True   '启动自动隐藏
    Private TotalData As New System.Diagnostics.PerformanceCounter("Network Interface", "Bytes Total/sec", "MS TCP Loopback interface")
    Private proTime As New System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "_Total")

    '双击右下角的图标的响应事件
    Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
        If (Me.Visible = False) Then
            Me.Show()
        End If
    End Sub


    '重载窗体的关闭事件,使窗体隐藏
    Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        e.Cancel = True          '取消窗体的关闭动作
        delayTime.Value = delay  '还原delayTime控件的值
        StrToItems()             '还原ListBox的值
        Me.Hide()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.SelectedIndex = 2     '设置默认选项  "每天"
        ComboBox2.SelectedIndex = 4     '设置默认选项  "关机"
        Timer1.Start()
        readReg()                       '读取存放在注册表的信息
        StrToItems()                    '把字符串的信息读取到ListBox
        delayTime.Value = delay         '把延时时间读取到delayTime控件
        DateTimePicker1.Value = Today
        'Shell("C:\windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe " & Application.ExecutablePath)
        'shell("net start")
    End Sub


    Private Sub 退出程序ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出程序ToolStripMenuItem.Click
        Me.Dispose()
    End Sub


    Private Sub 立即取消关机ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 立即取消关机ToolStripMenuItem1.Click
        Timer2.Stop()
        取消窗体.Close()
        Shell("shutdown -a")
        Timer1.Start()
    End Sub

    Private Sub 设置关机计划ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 设置关机计划ToolStripMenuItem.Click
        If Me.Visible = False Then
            Me.Show()
        End If
    End Sub


    '点击确定按钮的事件处理
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        '判断是否要开机自动运行
        If autoCheck.Checked Then
            创建开机自动运行()
        Else
            删除开机自动运行()
        End If

        If Me.HideCheck.Checked Then
            autoHide = True
        Else
            autoHide = False
        End If

        If Me.regCheck.Checked Then
            禁止修改注册表()
        Else
            取消禁止修改注册表()
        End If

        If Me.ManCheck.Checked Then
            禁止使用任务管理器()
        Else
            取消禁止使用任务管理器()
        End If

        If Me.SysTimeCheck.Checked Then
            SysTime = True
        Else
            SysTime = False
        End If
        '四舍五入delayTime控件的值
        delay = Math.Round(delayTime.Value, MidpointRounding.AwayFromZero)
        Me.Hide()
        ItemsToStr()    '把listBox的信息保存到字符串中
        writeReg()      '把字符串保存把注册表中
    End Sub


    '取消按钮事件
    Private Sub canelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles canelButton.Click
        StrToItems()             '还原ListBox的值
        delayTime.Value = delay  '还原delayTime控件的值
        Me.Hide()
    End Sub


    '点击添加按钮
    Private Sub addButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.Click
        Dim tempStr As String = ""
        If ComboBox1.Items.Item(ComboBox1.SelectedIndex) = "指定日期" Then
            tempStr = DateTimePicker1.Value.ToShortDateString
        Else
            tempStr = ComboBox1.SelectedItem
        End If
        tempStr &= "," & CStr(Math.Round(hourNum.Value, MidpointRounding.AwayFromZero)) & ":" & CStr(Math.Round(minNum.Value, MidpointRounding.AwayFromZero)) & ":" & CStr(Math.Round(secNum.Value, MidpointRounding.AwayFromZero)) & ","
        Select Case ComboBox2.SelectedItem
            Case "打开网址"
                tempStr &= "打开网址" & "[" & TextBox1.Text.Replace(";", ";").Replace(":", ":") & "]"
            Case "提醒信息"
                tempStr &= "提醒信息" & "[" & TextBox1.Text.Replace(";", ";").Replace(":", ":") & "]"
            Case "打开文件"
                tempStr &= "打开文件" & "[" & TextBox1.Text.Replace(";", ";").Replace(":", ":") & "]"
            Case Else
                tempStr &= ComboBox2.SelectedItem
        End Select
        ListBox1.Items.Add(tempStr)
        'ListBox1.Items.Add(ComboBox1.SelectedItem & "," & CStr(Math.Round(hourNum.Value, MidpointRounding.AwayFromZero)) & ":" & CStr(Math.Round(minNum.Value, MidpointRounding.AwayFromZero)) & "," & CStr(Math.Round(secNum.Value, MidpointRounding.AwayFromZero)) & "," & ComboBox2.SelectedItem & ";")
    End Sub


    '点击清除按钮
    Private Sub clearButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles clearButton.Click
        ListBox1.Items.Clear()
    End Sub


    '把ListBox的值保存到字符串ShutTime
    Private Sub ItemsToStr()
        Dim i As Integer
        shutTime = ""
        For i = 0 To ListBox1.Items.Count - 1
            '把ListBox中的各项连接到shutTime
            shutTime &= ListBox1.Items.Item(i) & ";"
        Next
        If shutTime <> "" Then
            '去除最后一个 ";"
            shutTime = Mid(shutTime, 1, shutTime.Length - 1)
        End If
    End Sub


    '把字符串ShutTime的值还原到ListBox
    Private Sub StrToItems()
        If shutTime <> "" Then                                          '如果shutTime有保存信息
            Dim temp() As String = shutTime.Split(";")                  'temp字符串数组存放shutTime以";"分隔的各个字符子串
            Dim t As String                                             't存放temp字符串数组的一项
            ListBox1.Items.Clear()
            For Each t In temp
                If Not (Mid(t, 1, 2) = "今天" And Not IsToday) Then     '如果今天还没过了
                    ListBox1.Items.Add(t)
                End If
            Next
        End If
    End Sub


    '读取注册表保存的信息
    Private Sub readReg()
        Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey
        Try
            key = Microsoft.Win32.Registry.LocalMachine
            subkey = key.OpenSubKey("SOFTWARE\AutoShutdown")
            shutTime = subkey.GetValue("time")
            delay = CInt(subkey.GetValue("delayTime"))
            autoHide = subkey.GetValue("autoHide")
            If (CStr(Today()) <> subkey.GetValue("day")) Then
                IsToday = False
            End If
        Catch ex As Exception
            shutTime = ""
            IsToday = True
        End Try
    End Sub

    Private Sub 禁止修改注册表()
        Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey
        key = Microsoft.Win32.Registry.CurrentUser
        subkey = key.CreateSubKey("software\microsoft\windows\currentversion\policies\system")
        subkey.SetValue("disableregistrytools", 1)
    End Sub

    Private Sub 取消禁止修改注册表()
        Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey
        key = Microsoft.Win32.Registry.CurrentUser
        subkey = key.CreateSubKey("software\microsoft\windows\currentversion\policies\system")
        subkey.SetValue("disableregistrytools", 0)
    End Sub

    Private Sub 禁止使用任务管理器()
        Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey
        key = Microsoft.Win32.Registry.CurrentUser
        subkey = key.CreateSubKey("software\microsoft\windows\currentversion\policies\system")
        subkey.SetValue("DisableTaskMgr", 1)
    End Sub

    Private Sub 取消禁止使用任务管理器()
        Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey
        key = Microsoft.Win32.Registry.CurrentUser
        subkey = key.CreateSubKey("software\microsoft\windows\currentversion\policies\system")
        subkey.SetValue("DisableTaskMgr", 0)
    End Sub
    '将需要保存的信息写入注册表
    Private Sub writeReg()
        Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey
        key = Microsoft.Win32.Registry.LocalMachine
        subkey = key.CreateSubKey("SOFTWARE\AutoShutdown")
        subkey.SetValue("time", shutTime)
        subkey.SetValue("day", CStr(Today()))
        subkey.SetValue("delayTime", CStr(delay))
        subkey.SetValue("autoHide", autoHide)
    End Sub


    '点击删除按钮
    Private Sub delButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delButton.Click
        Dim delIndex As Integer = ListBox1.SelectedIndex
        If delIndex <> -1 Then
            ListBox1.Items.RemoveAt(delIndex)
        End If
    End Sub


    '最小化窗体,这里指隐藏窗体

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -