[开发手记] 使用.NET实现你的IP切换器
發(fā)布日期:2007.4.17 作者:Anytao
?2007 Anytao.com 轉(zhuǎn)貼請(qǐng)注明出處,留此信息。
?下載:[Anytao.IPHelper][代碼下載,近期上傳]??
本文將介紹以下內(nèi)容:
? 批處理文件應(yīng)用
? 調(diào)用外部應(yīng)用
? 文件處理
1. 引言
經(jīng)常在公司、客戶(hù)和家里奔波,切換IP是天天要做的事情,所以有心開(kāi)發(fā)一個(gè)小的應(yīng)用程序,來(lái)實(shí)現(xiàn)IP地址的快捷切換。既然有了思路就著手來(lái)做,我首先想到的是應(yīng)用netsh.exe工具來(lái)實(shí)現(xiàn),所以配置一個(gè)批處理文件來(lái)實(shí)現(xiàn)netsh.exe命令的執(zhí)行,然后使用.NET框架來(lái)調(diào)用bat文件即可大功告成。話(huà)已至此,馬上行動(dòng)。
2. 基本原理
根據(jù)上述解決思路,我的小系統(tǒng),定名為《Anytao.IpHelper》的解決方案如下:
- 以批處理文件加載netsh.exe命令,實(shí)現(xiàn)IP加載;
- 以.NET的Process方法,實(shí)現(xiàn)對(duì)外部應(yīng)用的調(diào)用;
- 附帶進(jìn)度控制和文件檢索功能。
因此,有必要對(duì)系統(tǒng)運(yùn)行的原理進(jìn)行簡(jiǎn)單的梳理,來(lái)龍去脈,揭開(kāi)本質(zhì)。
2.1. netsh工具簡(jiǎn)介
長(zhǎng)篇大論的netsh命令介紹,在此就不特別介紹了,百度上隨便就可以找到更加詳細(xì)的netsh命令手冊(cè),可以耗你一天的功夫來(lái)研究,本文既然著眼于應(yīng)用,就從實(shí)際的招式來(lái)闡述,詳細(xì)的武功秘籍留待看官量身定做,此處只提供參考:netsh命令詳解、netsh命令使用。
在本文中,請(qǐng)參考以下步驟來(lái)實(shí)現(xiàn)你的netsh命令處理器:
@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、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)和DNS服務(wù)器地址;如果是英文版操作系統(tǒng),將“本地連接”改為“l(fā)ocal Area?Connection ”。
另存該文本為批處理文件,在此另存為:home.bat。
點(diǎn)擊該批處理文件,即可將您的IP更新為上述值。
2.2. Process方法簡(jiǎn)介
Process方法,位于System.Diagnostics命名空間。MSDN的定義為:Process 組件提供對(duì)正在計(jì)算機(jī)上運(yùn)行的進(jìn)程的訪(fǎng)問(wèn)。對(duì)于啟動(dòng)、停止、控制和監(jiān)視應(yīng)用程序等任務(wù),Process 組件是很有用的工具。使用 Process 組件,可以獲取正在運(yùn)行的進(jìn)程的列表,或者可以啟動(dòng)新的進(jìn)程。Process 組件用于訪(fǎng)問(wèn)系統(tǒng)進(jìn)程。初始化 Process 組件后,可使用該組件來(lái)獲取有關(guān)當(dāng)前運(yùn)行的進(jìn)程的信息。此類(lèi)信息包括線(xiàn)程集、加載的模塊(.dll 和 .exe 文件)和性能信息(如進(jìn)程當(dāng)前使用的內(nèi)存量)。因此,以Process方法來(lái)打開(kāi)外部批處理文件是托管環(huán)境下值得推薦的方法。
當(dāng)然,以Process方法來(lái)打開(kāi)外部程序,并不是唯一的辦法,最簡(jiǎn)單的莫過(guò)于調(diào)用WinAPI程序來(lái)實(shí)現(xiàn),當(dāng)然這又牽扯到非托管代碼的范疇,我們就不再多羅嗦了。
我的另一篇拙作《在WinForm應(yīng)用程序中打開(kāi)Url》中,也有相關(guān)的論述,具體的實(shí)現(xiàn)見(jiàn)代碼部分的分析。?
2.3. 基本的系統(tǒng)結(jié)構(gòu)如下:
?
3. 實(shí)現(xiàn)方法:
?3.1 創(chuàng)建Windows Form 應(yīng)用程序,設(shè)置程序名稱(chēng)為Anytao.IPHelper,并向窗體文件中拖入一個(gè)ComboBox和一個(gè)按鈕控件,分別命名為:cbbIP和btnIPConfig,如下圖所示:
?
3.2 雙擊btnIpConfig按鈕,實(shí)現(xiàn)其Click事件,如下,具體代碼見(jiàn)注釋:
????????{
????????????try
????????????{
????????????????//使用Process方法加載外部應(yīng)用
????????????????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 當(dāng)然我們還要實(shí)現(xiàn)程序加載時(shí)的獲取文件目錄的操作,如下:
????????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 當(dāng)然,按照上述方法,將配置好的netsh.exe批處理文件,放在目標(biāo)位置后,你就可以實(shí)現(xiàn)自己的IpHelper了。
3.5 恭喜你,簡(jiǎn)單的IPHelper已經(jīng)實(shí)現(xiàn),運(yùn)行你的程序,享受快速配置IP帶來(lái)的便捷吧。
?
4. 系統(tǒng)展望
?Anytao.IpHelper,只是點(diǎn)燃了一個(gè)快速應(yīng)用的火苗,我在平時(shí)的工作中也享受了這種方便的痛快,我的Emma的機(jī)子里也必備了IpHelper,就好像是我每天帶給她的愛(ài)護(hù)和關(guān)心。嘿嘿,寫(xiě)代碼的也可以用這種方式,哄哄家里的娘子軍嘛,讓我們的程序人生更加和諧。
言歸正傳,IpHelper只是個(gè)代步的工具,還有更多的思想和設(shè)計(jì)可以融會(huì)到里面做為充實(shí),我將會(huì)再以后的時(shí)間逐漸完善以下幾個(gè)方面:
- 設(shè)計(jì)Ip、IpConfig類(lèi),來(lái)以面向?qū)ο蠓绞酵晟葡到y(tǒng)架構(gòu);
- 增加Ip錄入功能,實(shí)現(xiàn)動(dòng)態(tài)增加Ip選項(xiàng)的能力,而不需要手工實(shí)現(xiàn);
- 更多桌面網(wǎng)絡(luò)管理平臺(tái)融合。
5. 結(jié)語(yǔ)后下載
本文的主要目的是,以一個(gè)示例為切入點(diǎn),講明白如何在托管環(huán)境中以Process方法來(lái)加載外部應(yīng)用,使用Process可以方便的在你的應(yīng)用中打開(kāi)網(wǎng)站、郵件、外部程序、腳本等,因此是值得學(xué)習(xí)的東西。
因?yàn)?#xff0c;以開(kāi)發(fā)為基礎(chǔ)的文章是第一次嘗試,不知請(qǐng)大家見(jiàn)笑,小小工具希望給您的生活帶來(lái)方便。
代碼部分還要部分完善,今日先提供程序部分,代碼部分我將于近日盡快上傳,請(qǐng)大家見(jiàn)諒,希望這個(gè)小工具能給你帶來(lái)方便。
下載:[Anytao.IPHelper][代碼下載,近期上傳]
?
?2007 Anytao.com 轉(zhuǎn)貼請(qǐng)注明出處,留此信息。
本貼子以“現(xiàn)狀”提供且沒(méi)有任何擔(dān)保,同時(shí)也沒(méi)有授予任何權(quán)利。
This posting is provided "AS IS" with no warranties, and confers no rights.
轉(zhuǎn)載于:https://www.cnblogs.com/anytao/archive/2007/04/17/anytao_dev_01.html
總結(jié)
以上是生活随笔為你收集整理的[开发手记] 使用.NET实现你的IP切换器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 繁体机文本转换
- 下一篇: 好消息:VS 2008 and .NET