程序可以监控网络连接状态,可以设定网络断开的话就自动关机或运行程序。
新浪博客:http://blog.sina.com.cn/s/blog_647ee5f70100wicy.html
更新 : 1.增加功能 2.细节调整 3.修复BUG 4.错误处理
界面图及控件命名如下:
此外,程序还包含两个Timer控件,Timer1用于定时执行命令,Timer2用于获取当前时间并显示;一个NotifyIcon控件用于显示托盘图标;一个ContextMenuStrip控件用于托盘图标的右键菜单;一个OpenfileDialog控件用于打开文件。
源代码:
Public Class Monitor1 Dim a As Boolean Private Sub Form1_Load(sender As System.Object,e As System.EventArgs) Handles MyBase.Load Label3.Text = "当前时间:" & My.Computer.Clock.LocalTime.TolongTimeString '获取当前时间并显示 Timer1.Interval = My.Settings.Interval1 '从设置中获取保存的检测间隔 ComboBox1.Selectedindex = 1 '令检测间隔选择框默认显示第二项 If My.Settings.LWS = 1 Then '初始化【开机启动】复选框状态 CheckBox3.Checked = True Else CheckBox3.Checked = False End If If My.Settings.SWR = 1 Then '获取【运行即监控】设置 Timer1.Enabled = True CheckBox4.Checked = True button1.Text = "关闭监视" Label2.Text = "监视功能状态:已开启" Label2.Forecolor = color.DarkGreen Else Timer1.Enabled = False CheckBox4.Checked = False button1.Text = "开启监视" Label2.Text = "监视功能状态:已关闭" Label2.Forecolor = color.DarkRed End If a = My.Computer.Network.Ping("8.8.8.8") '通过Ping 8.8.8.8来判断网络是否连通 If a = True Then Label1.Text = "网络状态:网络已连接" '如果网络已连接,则显示 light1.Fillcolor = color.Green '同时将“指示灯”颜色更改为绿色 light1.FillGradIEntcolor = color.lightGreen NotifyIcon1.Text = "网络监视器" & Chr(13) & "网络状态:网络已连接" Else Label1.Text = "网络状态:网络未连接" NotifyIcon1.Text = "网络监视器" & Chr(13) & "网络状态:网络未连接" End If NotifyIcon1.ContextMenuStrip = ContextMenuStrip1 '为托盘图标添加右键菜单 If My.Settings.filePath1 = "" Then TextBox1.Text = "请输入要运行的程序路径" Else TextBox1.Text = My.Settings.filePath1 End If End Sub Private Sub Timer1_Tick(sender As System.Object,_ e As System.EventArgs) Handles Timer1.Tick 'Timer1控件的Tick间隔为20000毫秒 Dim result2 As String a = My.Computer.Network.Ping("8.8.8.8") If a = True Then Label1.Text = "网络状态:网络已连接" light1.Fillcolor = color.Green light1.FillGradIEntcolor = color.lightGreen NotifyIcon1.Text = "网络监视器" & Chr(13) & "网络状态:网络已连接" '设置托盘图标的显示内容 Else Label1.Text = "网络状态:网络未连接" '如果网络未连接,则显示 light1.Fillcolor = color.Red '同时更改“指示灯”颜色为红色 light1.FillGradIEntcolor = color.Pink NotifyIcon1.Text = "网络监视器" & Chr(13) & "网络状态:网络未连接" If CheckBox1.Checked = True Then '如果勾选【网络断开自动关机】 Dim systemD As String systemD = System.Environment.SystemDirectory Process.Start(systemD & "\shutdown.exe","-s -t 60") '则执行关机命令,延迟60秒 Timer1.Enabled = False '令Timer1不可用,以阻止多次执行同一动作 result2 = MsgBox("网络已断开,计算机将在60秒内关闭",MsgBoxStyle.OkCancel) 'd出对话框提示计算机即将关闭 Me.ShowInTaskbar = True If result2 = vbCancel Then Process.Start(systemD & "\shutdown.exe","-a") '若用户在关机前点击对话框的“取消”按钮,则取消自动关机 CheckBox1.Checked = False Timer1.Enabled = True End If Else If CheckBox2.Checked = True And TextBox1.Text <> "" Then '如果勾选【网络断开运行程序】 Try Process.Start(TextBox1.Text) '则运行程序 CheckBox2.Checked = False Catch ex As Exception MsgBox("发生错误,可能是文件不存在!",MsgBoxStyle.Exclamation) End Try End If End If End If End Sub Private Sub CheckBox1_CheckedChanged(sender As System.Object,e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then CheckBox2.Enabled = False Else CheckBox2.Enabled = True End If End Sub Private Sub CheckBox2_CheckedChanged(sender As System.Object,e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.Checked = True Then '如果选择了第二个单选按钮 CheckBox1.Enabled = False '禁用另一功能 TextBox1.Enabled = True '启用文本框 If TextBox1.Text = "请输入要运行的程序路径" Then TextBox1.Text = "" '清空文本框内容 End If button2.Enabled = True '启用【浏览】按钮 button3.Enabled = True '启用【保存路径】按钮 Else CheckBox1.Enabled = True TextBox1.Enabled = False If TextBox1.Text = "" Then TextBox1.Text = "请输入要运行的程序路径" End If button2.Enabled = False button3.Enabled = False End If End Sub Private Sub CheckBox3_CheckedChanged(sender As System.Object,e As System.EventArgs) Handles CheckBox3.CheckedChanged If CheckBox3.Checked = True Then Try My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\windows\CurrentVersion\Run",_ "NetworkMonitor",Application.ExecutablePath) '写入注册表 Catch ex As Exception MsgBox("发生未知错误,错误代码:" & Err.Number) '其实几乎不可能发生错误 End Try MsgBox("设置完毕,已启用开机自动运行",MsgBoxStyle.information) '提示 My.Settings.LWS = 1 '保存设置 Else Try My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\windows\CurrentVersion\Run","") Catch ex As Exception MsgBox("发生错误,错误代码:" & Err.Number,MsgBoxStyle.Exclamation) End Try MsgBox("设置完毕,已禁止开机自动运行",MsgBoxStyle.information) My.Settings.LWS = 0 End If End Sub Private Sub CheckBox4_CheckedChanged(sender As System.Object,e As System.EventArgs) Handles CheckBox4.CheckedChanged If CheckBox4.Checked = True Then My.Settings.SWR = 1 '保存设置 Else My.Settings.SWR = 0 End If End Sub Private Sub button1_Click(sender As System.Object,e As System.EventArgs) Handles button1.Click If button1.Text = "关闭监视" Then '点击【关闭监视】按钮 Timer1.Enabled = False '则禁用计时器,即停止监视功能 Label2.Text = "监视功能状态:已关闭" '显示状态 Label2.Forecolor = color.DarkRed '修改字体颜色 button1.Text = "开启监视" '修改按钮文本 Else Timer1.Enabled = True Label2.Text = "监视功能状态:已开启" Label2.Forecolor = color.DarkGreen button1.Text = "关闭监视" End If End Sub Private Sub button2_Click(sender As System.Object,e As System.EventArgs) Handles button2.Click Try OpenfileDialog1.ShowDialog() TextBox1.Text = OpenfileDialog1.filename Catch ex As Exception MsgBox("发生错误",MsgBoxStyle.Exclamation) End Try End Sub Private Sub button3_Click(sender As System.Object,e As System.EventArgs) Handles button3.Click If TextBox1.Text <> "请请输入要运行的程序路径" And TextBox1.Text <> "" Then My.Settings.filePath1 = TextBox1.Text Else MsgBox("请输入正确的路径",MsgBoxStyle.Exclamation) End If End Sub Private Sub button4_Click(sender As System.Object,e As System.EventArgs) Handles button4.Click If Me.WIDth = 425 Then Me.WIDth = 700 '展开【设置】部分 GroupBox2.Enabled = True '启用【设置】部分 button4.Text = "设置 <<" Else Me.WIDth = 425 GroupBox2.Enabled = False button4.Text = "设置 >>" End If End Sub Private Sub button5_Click(sender As System.Object,e As System.EventArgs) Handles button5.Click Dim interval2 As Integer If button5.Text = "设置检测间隔" Then button5.Text = "保存" ComboBox1.Enabled = True Else Select Case ComboBox1.Text Case "10秒" interval2 = 10000 Case "20秒(默认)" interval2 = 20000 Case "30秒" interval2 = 30000 Case "1分钟" interval2 = 60000 Case "2分钟" interval2 = 120000 Case "5分钟" interval2 = 300000 Case "10分钟" interval2 = 600000 Case "20分钟" interval2 = 1200000 Case "30分钟" interval2 = 1800000 End Select My.Settings.Interval1 = interval2 button5.Text = "设置检测间隔" ComboBox1.Enabled = False End If End Sub Private Sub NotifyIcon1_MouseDoubleClick(sender As System.Object,e As System.windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick Me.windowstate = Formwindowstate.normal '双击托盘图标,显示窗口 If Me.windowstate = Formwindowstate.Minimized Then Me.ShowInTaskbar = True End If End Sub Private Sub monitor1_Resize(sender As Object,e As System.EventArgs) Handles Me.Resize If Me.windowstate = Formwindowstate.Minimized Then Me.ShowInTaskbar = False '当程序最小化,则不在任务栏显示图标 End If End Sub Private Sub ShownHIDe1_Click(sender As System.Object,e As System.EventArgs) Handles ShownHIDe1.Click If ShownHIDe1.Text = "隐藏窗口" Then Me.windowstate = Formwindowstate.Minimized ShownHIDe1.Text = "显示窗口" Else Me.windowstate = Formwindowstate.normal ShownHIDe1.Text = "隐藏窗口" End If End Sub Private Sub Exit1_Click(sender As System.Object,e As System.EventArgs) Handles Exit1.Click End End Sub Private Sub Timer2_Tick(sender As System.Object,e As System.EventArgs) Handles Timer2.Tick Label3.Text = "当前时间:" & My.Computer.Clock.LocalTime.TolongTimeString End Sub Private Sub linkLabel1_linkClicked(sender As System.Object,e As System.windows.Forms.linkLabellinkClickedEventArgs) Handles linkLabel1.linkClicked Try System.Diagnostics.Process.Start("mailto:[email protected]") Catch ex As Exception MsgBox("没有关联的邮件程序",MsgBoxStyle.Exclamation) End Try End Sub Private Sub OpenfileDialog1_fileOk(sender As System.Object,e As System.ComponentModel.CancelEventArgs) Handles OpenfileDialog1.fileOk End SubEnd Class总结
以上是内存溢出为你收集整理的[VB.net]网络状态监视器[2012.02.28]全部内容,希望文章能够帮你解决[VB.net]网络状态监视器[2012.02.28]所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)