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;
                             }
                        }
                   }
              }
    
  • 相关阅读:
    selenium防止检测,修改chromedriver.exe
    ElasticSearch笔记脚本(script)
    Newtonsoft助手类
    js单元测试,使用断言捕获抛出的异常
    解决homebrew的权限问题
    匹配驼峰命名、蛇形命名的正则表达式
    supertest测试,expect不同的状态码,但都能通过
    如何退出/关闭telnet终端
    解决子模块的合并冲突
    解决终端无法访问github.com 的错误
  • 原文地址:https://www.cnblogs.com/LiMin/p/4833997.html
Copyright © 2011-2022 走看看