简体企业网站
英文企业网站
繁体企业网站
三语企业网站
 
综合网店商城
鲜花礼品网店
图书音像网店
手机数码网店
服装鞋业网店
学校教育网站
医院诊所网站
律师事务网站
代理网站平台
 
行业商贸网站
城市美食网站
分类信息网站
新闻文章网站
 
国际域名
国内域名
虚拟主机
企业邮局
 
优惠套餐
基础报价
模块开发报价
网站定制流程
 
代理商体系
代理商优势
申请流程
加盟办事处
 
Asp编程
PHP编程
.Net编程
XML编程
更多教程...
网站管理
预付款充值
付款方式
在线教程
 
   
 
Asp编程  (32)
PHP编程  (13)
.Net编程  (10)
Xml编程  (10)
Access  (10)
Mssql  (10)
Mysql  (10)
Jsp编程  (0)
 
使用.NET实现你的IP切换器
深圳通用网站建设与开发工作室   2008-06-15 00:38:04 作者:SystemMaster 来源: 文字大小:[][][]
1. 引言

  经常在公司、客户和家里奔波,切换IP是天天要做的事情,所以有心开发一个小的应用程序,来实现IP地址的快捷切换。既然有了思路就着手来做,我首先想到的是应用netsh.exe工具来实现,所以配置一个批处理文件来实现netsh.exe命令的执行,然后使用.NET框架来调用bat文件即可大功告成。话已至此,马上行动。

  2. 基本原理

  根据上述解决思路,我的小系统,定名为《Anytao.IpHelper》的解决方案如下:

  以批处理文件加载netsh.exe命令,实现IP加载;

  以.NET的Process方法,实现对外部应用的调用;

  附带进度控制和文件检索功能。

  因此,有必要对系统运行的原理进行简单的梳理,来龙去脉,揭开本质。

  2.1. netsh工具简介

  长篇大论的netsh命令介绍,在此就不特别介绍了,百度上随便就可以找到更加详细的netsh命令手册,可以耗你一天的功夫来研究,本文既然着眼于应用,就从实际的招式来阐述,详细的武功秘籍留待看官量身定做,此处只提供参考:netsh命令详解、netsh命令使用。

  在本文中,请参考以下步骤来实现你的netsh命令处理器:

  打开记事本,输入以下信息: 
@echo Anytao is switching your ip now.
@echo off
netsh interface ip set address 本地连接 static 172.1.1.226 255.0.0.0 172.30.7.254 1
netsh interface ip set dns 本地连接 static 200.121.5.1

echo www.anytao.com
Echo Congratulations, done.
pause

  注意:按照以上格式输入您的IP、子网掩码、默认网关和DNS服务器地址;如果是英文版操作系统,将“本地连接”改为“local Area Connection ”。

  另存该文本为批处理文件,在此另存为:home.bat。

  点击该批处理文件,即可将您的IP更新为上述值。

  2.2. Process方法简介

  Process方法,位于System.Diagnostics命名空间。MSDN的定义为:Process 组件提供对正在计算机上运行的进程的访问。对于启动、停止、控制和监视应用程序等任务,Process 组件是很有用的工具。使用 Process 组件,可以获取正在运行的进程的列表,或者可以启动新的进程。Process 组件用于访问系统进程。初始化 Process 组件后,可使用该组件来获取有关当前运行的进程的信息。此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。因此,以Process方法来打开外部批处理文件是托管环境下值得推荐的方法。

  当然,以Process方法来打开外部程序,并不是唯一的办法,最简单的莫过于调用WinAPI程序来实现,当然这又牵扯到非托管代码的范畴,我们就不再多罗嗦了。

  我的另一篇拙作《在WinForm应用程序中打开Url》中,也有相关的论述,具体的实现见代码部分的分析。

  2.3. 基本的系统结构如下:

  3. 实现方法:

  3.1 创建Windows Form 应用程序,设置程序名称为Anytao.IPHelper,并向窗体文件中拖入一个ComboBox和一个按钮控件,分别命名为:cbbIP和btnIPConfig,如下图所示:

  3.2 双击btnIpConfig按钮,实现其Click事件,如下,具体代码见注释:

        private void btnIpconfig_Click(object sender, EventArgs e)
        {
            try
            {
                //使用Process方法加载外部应用
                Process myProcess = new Process();
                myProcess.StartInfo.FileName = Application.StartupPath + @"\config\" + cbbIP.SelectedItem.ToString() + ".bat";
                MessageBox.Show(myProcess.StartInfo.FileName);
                myProcess.StartInfo.UseShellExecute = false;
                myProcess.StartInfo.RedirectStandardOutput = true;
                myProcess.Start();
                myProcess.WaitForExit();
            }
            catch (FileNotFoundException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

  3.3 当然我们还要实现程序加载时的获取文件目录的操作,如下:

        private void frmMain_Load(object sender, EventArgs e)
        {
            //将配置文件加载到下拉框中
            string path = Application.StartupPath + @"\config\";
            if (Directory.Exists(path))
            {
                DirectoryInfo dirinfo = new DirectoryInfo(path);
                foreach (FileInfo fi in dirinfo.GetFiles())
                {
                    cbbIP.Items.Add(Path.GetFileNameWithoutExtension(fi.FullName));
                }
            }                    
        }

  3.4 当然,按照上述方法,将配置好的netsh.exe批处理文件,放在目标位置后,你就可以实现自己的IpHelper了。

  3.5 恭喜你,简单的IPHelper已经实现,运行你的程序,享受快速配置IP带来的便捷吧。

  4. 系统展望

  Anytao.IpHelper,只是点燃了一个快速应用的火苗,我在平时的工作中也享受了这种方便的痛快,我的Emma的机子里也必备了IpHelper,就好像是我每天带给她的爱护和关心。嘿嘿,写代码的也可以用这种方式,哄哄家里的娘子军嘛,让我们的程序人生更加和谐。

  言归正传,IpHelper只是个代步的工具,还有更多的思想和设计可以融会到里面做为充实,我将会再以后的时间逐渐完善以下几个方面:

  设计Ip、IpConfig类,来以面向对象方式完善系统架构;

  增加Ip录入功能,实现动态增加Ip选项的能力,而不需要手工实现;

  更多桌面网络管理平台融合。

  5. 结语后下载

  本文的主要目的是,以一个示例为切入点,讲明白如何在托管环境中以Process方法来加载外部应用,使用Process可以方便的在你的应用中打开网站、邮件、外部程序、脚本等,因此是值得学习的东西。因为,以开发为基础的文章是第一次尝试,不知请大家见笑,小小工具希望给您的生活带来方便。代码部分还要部分完善,今日先提供程序部分,代码部分我将于近日尽快上传,请大家见谅,希望这个小工具能给你带来方便。  1. 引言

  经常在公司、客户和家里奔波,切换IP是天天要做的事情,所以有心开发一个小的应用程序,来实现IP地址的快捷切换。既然有了思路就着手来做,我首先想到的是应用netsh.exe工具来实现,所以配置一个批处理文件来实现netsh.exe命令的执行,然后使用.NET框架来调用bat文件即可大功告成。话已至此,马上行动。

  2. 基本原理

  根据上述解决思路,我的小系统,定名为《Anytao.IpHelper》的解决方案如下:

  以批处理文件加载netsh.exe命令,实现IP加载;

  以.NET的Process方法,实现对外部应用的调用;

  附带进度控制和文件检索功能。

  因此,有必要对系统运行的原理进行简单的梳理,来龙去脉,揭开本质。

  2.1. netsh工具简介

  长篇大论的netsh命令介绍,在此就不特别介绍了,百度上随便就可以找到更加详细的netsh命令手册,可以耗你一天的功夫来研究,本文既然着眼于应用,就从实际的招式来阐述,详细的武功秘籍留待看官量身定做,此处只提供参考:netsh命令详解、netsh命令使用。

  在本文中,请参考以下步骤来实现你的netsh命令处理器:

  打开记事本,输入以下信息: 
@echo Anytao is switching your ip now.
@echo off
netsh interface ip set address 本地连接 static 172.1.1.226 255.0.0.0 172.30.7.254 1
netsh interface ip set dns 本地连接 static 200.121.5.1

echo www.anytao.com
Echo Congratulations, done.
pause

  注意:按照以上格式输入您的IP、子网掩码、默认网关和DNS服务器地址;如果是英文版操作系统,将“本地连接”改为“local Area Connection ”。

  另存该文本为批处理文件,在此另存为:home.bat。

  点击该批处理文件,即可将您的IP更新为上述值。

  2.2. Process方法简介

  Process方法,位于System.Diagnostics命名空间。MSDN的定义为:Process 组件提供对正在计算机上运行的进程的访问。对于启动、停止、控制和监视应用程序等任务,Process 组件是很有用的工具。使用 Process 组件,可以获取正在运行的进程的列表,或者可以启动新的进程。Process 组件用于访问系统进程。初始化 Process 组件后,可使用该组件来获取有关当前运行的进程的信息。此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。因此,以Process方法来打开外部批处理文件是托管环境下值得推荐的方法。

  当然,以Process方法来打开外部程序,并不是唯一的办法,最简单的莫过于调用WinAPI程序来实现,当然这又牵扯到非托管代码的范畴,我们就不再多罗嗦了。

  我的另一篇拙作《在WinForm应用程序中打开Url》中,也有相关的论述,具体的实现见代码部分的分析。

  2.3. 基本的系统结构如下:

  3. 实现方法:

  3.1 创建Windows Form 应用程序,设置程序名称为Anytao.IPHelper,并向窗体文件中拖入一个ComboBox和一个按钮控件,分别命名为:cbbIP和btnIPConfig,如下图所示:

  3.2 双击btnIpConfig按钮,实现其Click事件,如下,具体代码见注释:

        private void btnIpconfig_Click(object sender, EventArgs e)
        {
            try
            {
                //使用Process方法加载外部应用
                Process myProcess = new Process();
                myProcess.StartInfo.FileName = Application.StartupPath + @"\config\" + cbbIP.SelectedItem.ToString() + ".bat";
                MessageBox.Show(myProcess.StartInfo.FileName);
                myProcess.StartInfo.UseShellExecute = false;
                myProcess.StartInfo.RedirectStandardOutput = true;
                myProcess.Start();
                myProcess.WaitForExit();
            }
            catch (FileNotFoundException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

  3.3 当然我们还要实现程序加载时的获取文件目录的操作,如下:

        private void frmMain_Load(object sender, EventArgs e)
        {
            //将配置文件加载到下拉框中
            string path = Application.StartupPath + @"\config\";
            if (Directory.Exists(path))
            {
                DirectoryInfo dirinfo = new DirectoryInfo(path);
                foreach (FileInfo fi in dirinfo.GetFiles())
                {
                    cbbIP.Items.Add(Path.GetFileNameWithoutExtension(fi.FullName));
                }
            }                    
        }

  3.4 当然,按照上述方法,将配置好的netsh.exe批处理文件,放在目标位置后,你就可以实现自己的IpHelper了。

  3.5 恭喜你,简单的IPHelper已经实现,运行你的程序,享受快速配置IP带来的便捷吧。

  4. 系统展望

  Anytao.IpHelper,只是点燃了一个快速应用的火苗,我在平时的工作中也享受了这种方便的痛快,我的Emma的机子里也必备了IpHelper,就好像是我每天带给她的爱护和关心。嘿嘿,写代码的也可以用这种方式,哄哄家里的娘子军嘛,让我们的程序人生更加和谐。

  言归正传,IpHelper只是个代步的工具,还有更多的思想和设计可以融会到里面做为充实,我将会再以后的时间逐渐完善以下几个方面:

  设计Ip、IpConfig类,来以面向对象方式完善系统架构;

  增加Ip录入功能,实现动态增加Ip选项的能力,而不需要手工实现;

  更多桌面网络管理平台融合。

  5. 结语后下载

  本文的主要目的是,以一个示例为切入点,讲明白如何在托管环境中以Process方法来加载外部应用,使用Process可以方便的在你的应用中打开网站、邮件、外部程序、脚本等,因此是值得学习的东西。因为,以开发为基础的文章是第一次尝试,不知请大家见笑,小小工具希望给您的生活带来方便。代码部分还要部分完善,今日先提供程序部分,代码部分我将于近日尽快上传,请大家见谅,希望这个小工具能给你带来方便。

最新评论
发表评论  
评论标题
评论内容
图片上传
表情图标
验 证 码
关于我们 建站流程 联系方式 付款方式 帮助中心 典型案例
 
主营范围:深圳网站建设、深圳网页设计、深圳网站制作与优化、大型网站建设、英文网站建设、域名注册、虚拟主机
深圳通用网站建设团队  点击这里给我发消息184268   点击这里给我发消息7683320    24小时服务:13510468215
Powered By 545.com.cn Copyright © 2006-2008  粤ICP备08039309号