快捷
导航
网站首页 | 红客黑客 | ASP.NET | vc++教程 | 网络技术 | JAva教程 |       频 | 大学培训 |
校园杂烩 | 恋爱联盟 | 抛绣球吧 | 征女朋友 | 大学咨询 | 考试资源 | 游      戏 | 许个愿吧 |
大学招聘 | 大学租房 | 日租专栏 | 校内市场 | 笑话宝典 | 精彩校园 |       库 |大学赛场 |
女生
专区
美丽女生 | 美体健身 | 香水伊人
服饰搭配 | 美容护肤 | 时尚彩妆
      
      
      
      
      
     
1/1页1 跳转到查看:4617
发新话题 回复该主题

C#实现启用或停用本地网络连接

C#实现启用或停用本地网络连接

今天在社区帮别人回答的一个问题,其实之前我也没弄过,今天自己在网上找了些别人的资料,自己改了一下,也是可以实现的。

首先添加Microsoft Shell Control And Automation引用,如果你不知道怎么添加Microsoft Shell Control And Automation引用,请参考一下步骤:
在你的解决方案资源管理器的bin上右键->选择添加引用->选择->COM标签->找到这个引用按确定即可

然后就可以编写代码了br>


+ expand sourceview plaincopy to clipboardprint?
static void Main(string[] args) 

    NetWork("本地连接", "启用");   

///  
/// 实现启用或停用本地网络链接 
///
 
/// 本地连接名称 
/// 操作,传入“启用”或“停用” 
static void NetWork(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;   
            } 
        } 
    } 

        static void Main(string[] args)
        {
            NetWork("本地连接", "启用");
        }
        ///
        /// 实现启用或停用本地网络链接
        ///

        /// 本地连接名称
        /// 操作,传入“启用”或“停用”
        static void NetWork(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;
                    }
                }
            }
        }

代码说明:

NetWork方法的两个参数说明:第一个为要进行操作的本地连接名称,第二个为你要进行的操作,传入“启用”或“停用”(win2000下可能是“禁用”)

这个方法的原理是先找到“网络连接”这个虚拟文件夹,其中shell.NameSpace(49)中的49据说是为了避免遍历控制面板,我没有测试过,有兴趣的朋友可以试试。然后找到要控制的本地连接对应的folderitem,然后枚举verb,找到需要的verb后,调用verb的DoIt方法,在DoIt的时候加了一个Thread.Sleep(1000); 是为了使程序不会由于遍历的太快而使操作失效,上述方法已测试通过,如有不足之处请指出.

TOP

 
1/1页1 跳转到
发表新主题 回复该主题