基于Visual C#2010 与WPF开发Windows 7检测网络连接于状态

在Windows7操作系统下,支持的网络类型越来越复杂,微软提供了WindowsAPICodePack来进行简化底层开发,

我们大家来亲自实践一下关于网络状态开发,基于WindowsAPICodePack

启动VS2010

 

 

 

基于WPF与.net4.0创建一个应用程序窗口,控件布局如下

 

并添加相关引用支持

 

 

 

插入以下代码,详细分析请见代码!

using System.Windows;
using System.Windows.Controls;
using System.Text;
using Microsoft.WindowsAPICodePack.Net;

namespace Microsoft.WindowsAPICodePack.Samples.NetworkDemo
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            LoadNetworkConnections();
        }

        private void LoadNetworkConnections()
        {
            NetworkCollection networks = NetworkListManager.GetNetworks(NetworkConnectivityLevels.All);

            foreach (Network n in networks)
            {
                // 创建 tab
                TabItem tabItem = new TabItem();
                tabItem.Header = string.Format("Network {0} ({1})", tabControl1.Items.Count, n.Name);
                tabControl1.Items.Add(tabItem);

                //
                StackPanel stackPanel2 = new StackPanel();
                stackPanel2.Orientation = Orientation.Vertical;

                // 列举所有信息
                AddProperty("网络名称: ", n.Name, stackPanel2);
                AddProperty("网络类型: ", n.Description, stackPanel2);
                AddProperty("域类型: ", n.DomainType.ToString(), stackPanel2);
                AddProperty("是否连接: ", n.IsConnected.ToString(), stackPanel2);
                AddProperty("是否上网: ", n.IsConnectedToInternet.ToString(), stackPanel2);
                AddProperty("网络 ID: ", n.NetworkId.ToString(), stackPanel2);
                AddProperty("类别: ", n.Category.ToString(), stackPanel2);
                AddProperty("创建时间: ", n.CreatedTime.ToString(), stackPanel2);
                AddProperty("连接时间: ", n.ConnectedTime.ToString(), stackPanel2);
                AddProperty("连接: ", n.Connectivity.ToString(), stackPanel2);

                //
                StringBuilder s = new StringBuilder();
                s.AppendLine("网络连接:");
                NetworkConnectionCollection connections = n.Connections;
                foreach (NetworkConnection nc in connections)
                {
                    s.AppendFormat("/n/t连接 ID: {0}/n/t类型: {1}/n/t是否连接: {2}/n/t 是否连接因特网: {3}/n",
                        nc.ConnectionId, nc.DomainType, nc.IsConnected, nc.IsConnectedToInternet);
                    s.AppendFormat("/t适配器 ID: {0}/n/t连接: {1}/n",
                        nc.AdapterId, nc.Connectivity);
                }
                s.AppendLine();

                Label label = new Label();
                label.Content = s.ToString();

                stackPanel2.Children.Add(label);
                tabItem.Content = stackPanel2;
            }

        }

        private void AddProperty(string propertyName, string propertyValue, StackPanel parent)
        {
            StackPanel panel = new StackPanel();
            panel.Orientation = Orientation.Horizontal;

            Label propertyNameLabel = new Label();
            propertyNameLabel.Content = propertyName;
            panel.Children.Add(propertyNameLabel); 

            Label propertyValueLabel = new Label();
            propertyValueLabel.Content = propertyValue;
            panel.Children.Add(propertyValueLabel);

            parent.Children.Add(panel);
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

        }
    }
}

 

 

 

运行,看看效果

 

 

 

 

 


原文链接: http://blog.csdn.net/yincheng01/article/details/5635263

转载于:https://my.oschina.net/junwong/blog/47980

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值