[VB.net]网络状态监视器[2012.02.28]

前端之家收集整理的这篇文章主要介绍了[VB.net]网络状态监视器[2012.02.28]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

程序可以监控网络连接状态,可以设定网络断开的话就自动关机或运行程序。

新浪博客http://blog.sina.com.cn/s/blog_647ee5f70100wicy.html


更新
2.细节调整
3.修复Bug
4.错误处理



界面图及控件命名如下:


此外,程序还包含两个Timer控件,Timer1用于定时执行命令,Timer2用于获取当前时间并显示;一个NotifyIcon控件用于显示托盘图标;一个ContextMenuStrip控件用于托盘图标的右键菜单;一个OpenFileDialog控件用于打开文件


代码

  1. Public Class Monitor1
  2.  
  3. Dim a As Boolean
  4.  
  5. Private Sub Form1_Load(sender As System.Object,e As System.EventArgs) Handles MyBase.Load
  6. Label3.Text = "当前时间:" & My.Computer.Clock.LocalTime.ToLongTimeString '获取当前时间并显示
  7. Timer1.Interval = My.Settings.Interval1 '从设置中获取保存的检测间隔
  8. ComboBox1.SelectedIndex = 1 '令检测间隔选择框默认显示第二项
  9.  
  10. If My.Settings.LWS = 1 Then '初始化【开机启动】复选框状态
  11. CheckBox3.Checked = True
  12. Else
  13. CheckBox3.Checked = False
  14. End If
  15.  
  16. If My.Settings.SWR = 1 Then '获取【运行即监控】设置
  17. Timer1.Enabled = True
  18. CheckBox4.Checked = True
  19. Button1.Text = "关闭监视"
  20. Label2.Text = "监视功能状态:已开启"
  21. Label2.ForeColor = Color.DarkGreen
  22. Else
  23. Timer1.Enabled = False
  24. CheckBox4.Checked = False
  25. Button1.Text = "开启监视"
  26. Label2.Text = "监视功能状态:已关闭"
  27. Label2.ForeColor = Color.DarkRed
  28. End If
  29.  
  30. a = My.Computer.Network.Ping("8.8.8.8") '通过Ping 8.8.8.8来判断网络是否连通
  31. If a = True Then
  32. Label1.Text = "网络状态:网络已连接" '如果网络已连接,则显示
  33. Light1.FillColor = Color.Green '同时将“指示灯”颜色更改为绿色
  34. Light1.FillGradientColor = Color.LightGreen
  35. NotifyIcon1.Text = "网络监视器" & Chr(13) & "网络状态:网络已连接"
  36. Else
  37. Label1.Text = "网络状态:网络未连接"
  38. NotifyIcon1.Text = "网络监视器" & Chr(13) & "网络状态:网络未连接"
  39. End If
  40. NotifyIcon1.ContextMenuStrip = ContextMenuStrip1 '为托盘图标添加右键菜单
  41. If My.Settings.FilePath1 = "" Then
  42. TextBox1.Text = "请输入要运行的程序路径"
  43. Else
  44. TextBox1.Text = My.Settings.FilePath1
  45. End If
  46. End Sub
  47.  
  48. Private Sub Timer1_Tick(sender As System.Object,_
  49. e As System.EventArgs) Handles Timer1.Tick 'Timer1控件的Tick间隔为20000毫秒
  50. Dim result2 As String
  51.  
  52. a = My.Computer.Network.Ping("8.8.8.8")
  53. If a = True Then
  54. Label1.Text = "网络状态:网络已连接"
  55. Light1.FillColor = Color.Green
  56. Light1.FillGradientColor = Color.LightGreen
  57. NotifyIcon1.Text = "网络监视器" & Chr(13) & "网络状态:网络已连接" '设置托盘图标的显示内容
  58. Else
  59. Label1.Text = "网络状态:网络未连接" '如果网络未连接,则显示
  60. Light1.FillColor = Color.Red '同时更改“指示灯”颜色为红色
  61. Light1.FillGradientColor = Color.Pink
  62. NotifyIcon1.Text = "网络监视器" & Chr(13) & "网络状态:网络未连接"
  63. If CheckBox1.Checked = True Then '如果勾选【网络断开自动关机】
  64. Dim systemD As String
  65. systemD = System.Environment.SystemDirectory
  66. Process.Start(systemD & "\shutdown.exe","-s -t 60") '则执行关机命令,延迟60秒
  67. Timer1.Enabled = False 'Timer1不可用,以阻止多次执行同一动作
  68. result2 = MsgBox("网络已断开,计算机将在60秒内关闭",MsgBoxStyle.OkCancel) '弹出对话框提示计算机即将关闭
  69. Me.ShowInTaskbar = True
  70. If result2 = vbCancel Then
  71. Process.Start(systemD & "\shutdown.exe","-a") '用户在关机前点击对话框的“取消”按钮,则取消自动关机
  72. CheckBox1.Checked = False
  73. Timer1.Enabled = True
  74. End If
  75. Else
  76. If CheckBox2.Checked = True And TextBox1.Text <> "" Then '如果勾选【网络断开运行程序】
  77. Try
  78. Process.Start(TextBox1.Text) '则运行程序
  79. CheckBox2.Checked = False
  80. Catch ex As Exception
  81. MsgBox("发生错误,可能是文件不存在!",MsgBoxStyle.Exclamation)
  82. End Try
  83. End If
  84. End If
  85. End If
  86. End Sub
  87.  
  88. Private Sub CheckBox1_CheckedChanged(sender As System.Object,e As System.EventArgs) Handles CheckBox1.CheckedChanged
  89. If CheckBox1.Checked = True Then
  90. CheckBox2.Enabled = False
  91. Else
  92. CheckBox2.Enabled = True
  93. End If
  94.  
  95. End Sub
  96.  
  97. Private Sub CheckBox2_CheckedChanged(sender As System.Object,e As System.EventArgs) Handles CheckBox2.CheckedChanged
  98. If CheckBox2.Checked = True Then '如果选择了第二个单选按钮
  99. CheckBox1.Enabled = False '禁用另一功能
  100. TextBox1.Enabled = True '启用文本框
  101. If TextBox1.Text = "请输入要运行的程序路径" Then
  102. TextBox1.Text = "" '清空文本框内容
  103. End If
  104. Button2.Enabled = True '启用【浏览】按钮
  105. Button3.Enabled = True '启用【保存路径】按钮
  106. Else
  107. CheckBox1.Enabled = True
  108. TextBox1.Enabled = False
  109. If TextBox1.Text = "" Then
  110. TextBox1.Text = "请输入要运行的程序路径"
  111. End If
  112. Button2.Enabled = False
  113. Button3.Enabled = False
  114. End If
  115. End Sub
  116.  
  117. Private Sub CheckBox3_CheckedChanged(sender As System.Object,e As System.EventArgs) Handles CheckBox3.CheckedChanged
  118. If CheckBox3.Checked = True Then
  119. Try
  120. My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",_
  121. "NetworkMonitor",Application.ExecutablePath) '写入注册
  122. Catch ex As Exception
  123. MsgBox("发生未知错误错误代码:" & Err.Number) '其实几乎不可能发生错误
  124. End Try
  125. MsgBox("设置完毕,已启用开机自动运行",MsgBoxStyle.Information) '提示
  126. My.Settings.LWS = 1 '保存设置
  127. Else
  128. Try
  129. My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","")
  130. Catch ex As Exception
  131. MsgBox("发生错误错误代码:" & Err.Number,MsgBoxStyle.Exclamation)
  132. End Try
  133. MsgBox("设置完毕,已禁止开机自动运行",MsgBoxStyle.Information)
  134. My.Settings.LWS = 0
  135. End If
  136. End Sub
  137.  
  138. Private Sub CheckBox4_CheckedChanged(sender As System.Object,e As System.EventArgs) Handles CheckBox4.CheckedChanged
  139. If CheckBox4.Checked = True Then
  140. My.Settings.SWR = 1 '保存设置
  141. Else
  142. My.Settings.SWR = 0
  143. End If
  144. End Sub
  145.  
  146. Private Sub Button1_Click(sender As System.Object,e As System.EventArgs) Handles Button1.Click
  147. If Button1.Text = "关闭监视" Then '点击【关闭监视】按钮
  148. Timer1.Enabled = False '则禁用计时器,即停止监视功能
  149. Label2.Text = "监视功能状态:已关闭" '显示状态
  150. Label2.ForeColor = Color.DarkRed '修改字体颜色
  151. Button1.Text = "开启监视" '修改按钮文本
  152. Else
  153. Timer1.Enabled = True
  154. Label2.Text = "监视功能状态:已开启"
  155. Label2.ForeColor = Color.DarkGreen
  156. Button1.Text = "关闭监视"
  157. End If
  158. End Sub
  159.  
  160. Private Sub Button2_Click(sender As System.Object,e As System.EventArgs) Handles Button2.Click
  161. Try
  162. OpenFileDialog1.ShowDialog()
  163. TextBox1.Text = OpenFileDialog1.FileName
  164. Catch ex As Exception
  165. MsgBox("发生错误",MsgBoxStyle.Exclamation)
  166. End Try
  167. End Sub
  168.  
  169. Private Sub Button3_Click(sender As System.Object,e As System.EventArgs) Handles Button3.Click
  170. If TextBox1.Text <> "请请输入要运行的程序路径" And TextBox1.Text <> "" Then
  171. My.Settings.FilePath1 = TextBox1.Text
  172. Else
  173. MsgBox("请输入正确的路径",MsgBoxStyle.Exclamation)
  174. End If
  175. End Sub
  176.  
  177. Private Sub Button4_Click(sender As System.Object,e As System.EventArgs) Handles Button4.Click
  178. If Me.Width = 425 Then
  179. Me.Width = 700 '展开【设置】部分
  180. GroupBox2.Enabled = True '启用【设置】部分
  181. Button4.Text = "设置 <<"
  182. Else
  183. Me.Width = 425
  184. GroupBox2.Enabled = False
  185. Button4.Text = "设置 >>"
  186. End If
  187. End Sub
  188.  
  189. Private Sub Button5_Click(sender As System.Object,e As System.EventArgs) Handles Button5.Click
  190. Dim interval2 As Integer
  191. If Button5.Text = "设置检测间隔" Then
  192. Button5.Text = "保存"
  193. ComboBox1.Enabled = True
  194. Else
  195. Select Case ComboBox1.Text
  196. Case "10秒"
  197. interval2 = 10000
  198. Case "20秒(默认)"
  199. interval2 = 20000
  200. Case "30秒"
  201. interval2 = 30000
  202. Case "1分钟"
  203. interval2 = 60000
  204. Case "2分钟"
  205. interval2 = 120000
  206. Case "5分钟"
  207. interval2 = 300000
  208. Case "10分钟"
  209. interval2 = 600000
  210. Case "20分钟"
  211. interval2 = 1200000
  212. Case "30分钟"
  213. interval2 = 1800000
  214. End Select
  215. My.Settings.Interval1 = interval2
  216. Button5.Text = "设置检测间隔"
  217. ComboBox1.Enabled = False
  218. End If
  219. End Sub
  220.  
  221. Private Sub NotifyIcon1_MouseDoubleClick(sender As System.Object,e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
  222. Me.WindowState = FormWindowState.Normal '双击托盘图标,显示窗口
  223. If Me.WindowState = FormWindowState.Minimized Then
  224. Me.ShowInTaskbar = True
  225. End If
  226. End Sub
  227.  
  228. Private Sub monitor1_Resize(sender As Object,e As System.EventArgs) Handles Me.Resize
  229. If Me.WindowState = FormWindowState.Minimized Then
  230. Me.ShowInTaskbar = False '当程序最小化,则不在任务栏显示图标
  231. End If
  232. End Sub
  233.  
  234. Private Sub ShownHide1_Click(sender As System.Object,e As System.EventArgs) Handles ShownHide1.Click
  235. If ShownHide1.Text = "隐藏窗口" Then
  236. Me.WindowState = FormWindowState.Minimized
  237. ShownHide1.Text = "显示窗口"
  238. Else
  239. Me.WindowState = FormWindowState.Normal
  240. ShownHide1.Text = "隐藏窗口"
  241. End If
  242. End Sub
  243.  
  244. Private Sub Exit1_Click(sender As System.Object,e As System.EventArgs) Handles Exit1.Click
  245. End
  246. End Sub
  247.  
  248. Private Sub Timer2_Tick(sender As System.Object,e As System.EventArgs) Handles Timer2.Tick
  249. Label3.Text = "当前时间:" & My.Computer.Clock.LocalTime.ToLongTimeString
  250. End Sub
  251.  
  252. Private Sub LinkLabel1_LinkClicked(sender As System.Object,e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
  253. Try
  254. System.Diagnostics.Process.Start("mailto:wangjingkaibear@live.cn")
  255. Catch ex As Exception
  256. MsgBox("没有关联的邮件程序",MsgBoxStyle.Exclamation)
  257. End Try
  258. End Sub
  259.  
  260. Private Sub OpenFileDialog1_FileOk(sender As System.Object,e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
  261.  
  262. End Sub
  263. End Class

猜你在找的VB相关文章