c#使用winnet检测网络连接状况

注:本代码的主体内容由CSDN的xt0050提供,911仅仅对其做了整理。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Pinyin
{
    
public partial class Form4 : Form
    
{
        
// 定义常量
        private const long INTERNET_CONNECTION_MODEM = 1;//Local system uses a modem to connect to the Internet.
        private const long INTERNET_CONNECTION_LAN = 2//Local system uses a local area network to connect to the Internet.
        private const long INTERNET_CONNECTION_PROXY = 4;//Local system uses a proxy server to connect to the Internet.
        private const long INTERNET_CONNECTION_MODEM_BUSY = 8;   //No longer used.
        private const long INTERNET_CONNECTION_CONFIGURED = 64//Local system has a valid connection to the Internet, but it might or might not be currently connected.
        private const long INTERNET_CONNECTION_OFFLINE = 32// Local system is in offline mode.
        private const long INTERNET_RAS_INSTALLED = 16//Local system has RAS installed.
        public Form4()
        
{
            InitializeComponent();
        }

        
//定义(引用)API函数
        [DllImport("wininet.dll")]
        
public static extern bool InternetGetConnectedState(out   long lpdwFlags, long dwReserved);

        
private void button1_Click(object sender, EventArgs e)
        
{
            
long lfag;
            
string strConnectionDev = "";
            
if (InternetGetConnectedState(out lfag, 0))
                strConnectionDev 
= "网络连接正常!";
            
else
                strConnectionDev 
= "网络连接不可用!";
            
if ((lfag & INTERNET_CONNECTION_OFFLINE) > 0)
                strConnectionDev 
+= "OFFLINE 本地系统处于离线模式。";
            
if ((lfag & INTERNET_CONNECTION_MODEM) > 0)
                strConnectionDev 
+= "Modem 本地系统使用调制解调器连接到互联网。";
            
if ((lfag & INTERNET_CONNECTION_LAN) > 0)
                strConnectionDev 
+= "LAN 本地系统使用的局域网连接到互联网。";
            
if ((lfag & INTERNET_CONNECTION_PROXY) > 0)
                strConnectionDev 
+= "a   Proxy";
            
if ((lfag & INTERNET_CONNECTION_MODEM_BUSY) > 0)
                strConnectionDev 
+= "Modem   but   modem   is   busy";
            MessageBox.Show(strConnectionDev);   
        }
  
    }

}
原文地址:https://www.cnblogs.com/scgw/p/1560623.html