zoukankan      html  css  js  c++  java
  • Win7网络检测 WindowsAPICodePack

    原文:http://www.cnblogs.com/yincheng01/archive/2010/05/30/2213234.html

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

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

    启动VS2010

    引入dll文件,添加如下代码即可

    private void LoadNetworkConnections()
            {
                try
                {
                    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;
                        string hh = System.Environment.NewLine;
                        foreach (NetworkConnection nc in connections)
                        {
                            s.AppendFormat(hh + "连接 ID: {0}" + hh + "类型: {1}" + hh + "是否连接: {2}" + hh + "是否连接因特网: {3}" + hh,
                                nc.ConnectionId, nc.DomainType, nc.IsConnected, nc.IsConnectedToInternet);
                            s.AppendFormat(hh + "适配器 ID: {0}" + hh + "连接: {1}" + hh,
                                nc.AdapterId, nc.Connectivity);
                        }
                        s.AppendLine();
    
                        Label label = new Label();
                        label.Content = s.ToString();
    
                        stackPanel2.Children.Add(label);
                        tabItem.Content = stackPanel2;
                    }
                }
                catch (Exception ex)
                {
                    txtReadWrite.WriteLog("检测网络异常!" + ex.GetType().FullName + ex.Message + ex.StackTrace);
                    (new Win_Popup("消息", "删除数据时出错!" + ex.Message, MessageBoxButton.OK)).ShowDialog();
                }
            }
    
            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);
            }

    窗口代码如下:

     <Grid>
            <TabControl Height="Auto" HorizontalAlignment="Stretch" Margin="10,10,10,10" Name="tabControl1" VerticalAlignment="Stretch" Width="Auto">
            </TabControl>
        </Grid>

    看下效果图吧:

    通过这个接口,可以获取各个网络的信息。dll下载点这

  • 相关阅读:
    位置控制
    Scaleform结合C++编程
    使用定点缓存进行绘制
    纹理
    动态规划:背包问题
    希尔排序
    折半插入排序
    快速排序
    上楼梯算法
    归并排序
  • 原文地址:https://www.cnblogs.com/lipanpan/p/3948796.html
Copyright © 2011-2022 走看看