微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

今天一个下午的成果,写了个程序,可以监控网络连接状态,可以设定网络断开的话就自动关机。很简单的小程序,方便挂机党让电脑在无人看管的情况下可以自动关机。


开头的时候本想用 My.Computer.Network.IsAvailable 来判断网络状态的,但发现不行,最后改用 ping 8.8.8.8 的方式来判断,8.8.8.8是谷歌的公共DNS。

界面设定图:


此外,程序还包含一个Timer控件用于定时执行命令,一个NotifyIcon控件用于显示托盘图标,一个ContextMenuStrip控件用于托盘图标的右键菜单


代码

Public Class monitor1

    Dim i As Integer = 0
    Dim a As String

    Private Sub Form1_Load(sender As System.Object,e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        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     '为托盘图标添加右键菜单
    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 Label2.Text = "网络断开自动关机功能:已开启" 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) '弹出对话框提示计算机即将关闭
                If result2 = vbCancel Then
                    Process.Start(systemD & "\shutdown.exe","-a")     '如果用户在关机前点击了对话框的“取消”按钮,则取消自动关机
                    Label2.Text = "网络断开自动关机功能:未开启"
                End If
            End If
        End If

    End Sub

    Private Sub Button1_Click(sender As System.Object,e As System.EventArgs) Handles Button1.Click
        Dim result1 As String
        If Label2.Text = "网络断开自动关机功能:未开启" Then
            Label2.Text = "网络断开自动关机功能:已开启"
            result1 = MsgBox("自动关机功能已开启,是否让程序后台运行?",vbYesNoCancel)
            Select Case result1
                Case vbYes
                    Me.WindowState = FormWindowState.Minimized      '如果用户选“是”,则隐藏程序
                Case vbCancel
                    Label2.Text = "网络断开自动关机功能:未开启"    '如果用户选“取消”,则取消设定
            End Select
        Else
            Label2.Text = "网络断开自动关机功能:未开启"
        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    '双击托盘图标,显示窗口
    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
End Class

程序在Windows7 +Visual Studio 2010 Express下编译通过

下载地址:http://115.com/file/dpi9m1x6#

其他页面http://blog.sina.com.cn/s/blog_647ee5f70100wdso.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr