zoukankan      html  css  js  c++  java
  • shell32.dll 控制网络

            //禁用 SetNetworkAdapter(False) 
            //启用 SetNetworkAdapter(True) 
            //添加引用system32/shell32.dll 
            private static bool SetNetworkAdapter(bool status) 
            { 
                const string discVerb = "停用(&B)"; // "停用(&B)"; 
                const string connVerb = "启用(&A)"; // "启用(&A)"; 
                const string network = "网络连接"; //"网络连接"; 
                const string networkConnection = "VMware Network Adapter VMnet1"; // "本地连接" 
    
                string sVerb = null; 
    
                if (status) 
                { 
                    sVerb = connVerb; 
                } 
                else 
                { 
                    sVerb = discVerb; 
                } 
    
                Shell32.Shell sh = new Shell32.Shell(); 
                Shell32.Folder folder = sh.NameSpace(Shell32.ShellSpecialFolderConstants.ssfCONTROLS); 
    
                try 
                { 
                    //进入控制面板的所有选项 
                    foreach (Shell32.FolderItem myItem in folder.Items()) 
                    { 
                        //进入网络连接 
                        if (myItem.Name == network) 
                        { 
                            Shell32.Folder fd = (Shell32.Folder)myItem.GetFolder; 
                            foreach (Shell32.FolderItem fi in fd.Items()) 
                            { 
                                //找到本地连接 
                                if ((fi.Name == networkConnection)) 
                                { 
                                    //找本地连接的所有右键功能菜单 
                                    foreach (Shell32.FolderItemVerb Fib in fi.Verbs()) 
                                    { 
                                        if (Fib.Name == sVerb) 
                                        { 
                                            Fib.DoIt(); 
                                            return true; 
                                        } 
                                    } 
                                } 
                            } 
                        } 
                    } 
                } 
                catch (Exception e) 
                { 
                    Console.WriteLine(e.Message); 
                    return false; 
                } 
                return true; 
            } 

    第一种出处:http://blog.csdn.net/leon_ice/article/details/4426278

    再来一种方式 其实大体上是一样的 只不过第二种个人觉得比较赞 win7也适用

              /// <summary>
              /// 启用网络
              /// </summary>
              /// <param name="sender"></param>
              /// <param name="e"></param>
              private void btn_StartNet_Click(object sender, EventArgs e)
              {
                   //SetNetworkAdapter(true);
    
                   SetTest("本地连接", "启用"); // SetTest("本地连接", "禁用");
              }
    
    
              private void SetTest(string netWorkName, string operation)
              {
                   Shell32.Shell shell = new Shell32.ShellClass();
                   Shell32.Folder folder = shell.NameSpace(49);
                   foreach (Shell32.FolderItem fi in folder.Items())
                   {
                        if (fi.Name != netWorkName)
                             continue;
                        Shell32.ShellFolderItem folderItem = (Shell32.ShellFolderItem)fi;
                        foreach (Shell32.FolderItemVerb fiv in folderItem.Verbs())
                        {
                             if (!fiv.Name.Contains(operation))
                                  continue;
                             else
                             {
                                  fiv.DoIt();
                                  Thread.Sleep(1000);
                                  break;
                             }
                        }
                   }
              }
    
  • 相关阅读:
    mssql分页原理及效率分析
    [ActiveX]使用VS2010创建MFC ActiveX工程项目
    Study notes for Discrete Probability Distribution
    oracle存储过程异常捕获
    (Python学习9)Python虚拟机中的一般表达式
    用Arduino做一个可视化网络威胁级别指示器!
    iOS上线项目源码分享
    android实习程序6——拨号通话
    评价等级使用的五星选择,包含半星的选择
    AJAX实现无刷新验证用户名
  • 原文地址:https://www.cnblogs.com/LiMin/p/4833997.html
Copyright © 2011-2022 走看看