使用.NET實現你的IP切換器 - .net語言 -

使用.NET實現你的IP切換器

時間:2013-07-24 12:29:04   來源:   評論:加載中...   點擊:加載中...
1. 引言經常在公司、客戶和家里奔波,切換IP是天天要做的事情,所以有心開發一個小的應用程序,來實現IP地址的快捷切換。既然有了思路就著手來做,我首先想到的是應用netsh.exe工具來實現,所以配置一個批處理文件...

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可以方便的在你的應用中打開網站、郵件、外部程序、腳本等,因此是值得學習的東西。因為,以開發為基礎的文章是第一次嘗試,不知請大家見笑,小小工具希望給您的生活帶來方便。代碼部分還要部分完善,今日先提供程序部分,代碼部分我將于近日盡快上傳,請大家見諒,希望這個小工具能給你帶來方便。



相關熱詞搜索:

 
上一篇:在ADO.NET中用參數化查詢縮短開發時間
下一篇:mscorwks.dll在.Net中的地位及代碼保護應用
收藏 將此文推薦給朋友
分享到:
10个数复式三中三多少组公式