現在學校和公司的朋友們大都遇到過這種情況吧:計算機需要經常在互聯網和局域網之間轉換,每次轉換除了換網線外,還需要修改網絡配置(IP地址、網關、DNS等等),相當麻煩。如何能在一個窗口中一步實現呢?有些公司提供了軟件如:IPChanger、EasyProxy等等,但是很遺憾這些軟件都不是免費軟件,只能試用一段時間。
因此,筆者經過嘗試,調試出一個非常簡單、易行的方法,供大家參考使用。
首先看一下原理:
Window的netsh命令通過創建和調用記錄網絡配置的文本文件即可修改網絡配置。主要包括一下兩個命令:
Netsh interface dump > 相對路徑\ netcfg1.txt
這條命令可以將計算機現有的網絡配置保存在netcfg1.txt文件中。
Netsh -f netcfg1.txt
這條命令即可將netcfg1.txt文件中保存的網絡配置應用到計算機中。
基於以上的兩條命令,筆者利用Delphi6.0編制小程序,將它進一步完善。運行結果如下圖所示:
如上圖所示,小軟件主要功能分成兩部分:網絡設置和網絡替換。因為一個計算機絕大多數是在兩個網絡中互換,所以本程序只實現了兩個網絡的互換,更多的網絡間互換道理是相同的。
網絡設置"互聯網"和"局域網"兩個Button的單擊事件是將左側網絡設置區的IP地址、網關、DNS等信息記錄到文本中。其中遇到的兩個主要困難是IP地址的錄入時的出錯情況處理和保存文本文件。
代碼如下:
procedure TForm1.BitBtn2Click(Sender: TObject); //"局域網"按鈕的單擊事件
begin
FileAppendProc1();
RadioButton2.Checked:=true;
end;
procedure TForm1.FileAppendProc1(); //保存文件的函數
var NetFile : TextFile;
NetFilename : string;
FileAppend,tempStr : string;
begin
NetFilename :='netcfg2.txt';
FileAppend :=S5+MaskEdit1.Text+S1+MaskEdit2.Text+S2+MaskEdit3.Text+S3+S4;
//MessageDlg('This is commend'+FileAppend,mtInformation,[mbOK],0);
AssignFile(Netfile,'net.txt'); //net.txt文件要放在應用程序的同一目錄中
Reset(NetFile);
begin
try
Memo1.Lines.Text:='';
while not Eof(NetFile) do
begin
Readln(NetFile,tempStr);
Memo1.Lines.Add(tempStr) ;
end;
finally
begin
CloseFile(NetFile);
end;
end;
AssignFile(Netfile,NetFilename);
Rewrite(NetFile);
try
Writeln(NetFile,'');
finally
CloseFile(NetFile);
end;
Memo1.Lines.Add(FileAppend);
Memo1.Lines.SaveToFile(NetFilename);
end;
end;
procedure TForm1.MaskEdit1Exit(Sender: TObject); //IP地址輸入出錯處理
var ip1,ip2,ip3,ip4: Integer;
begin
if (copy(MaskEdit1.Text,1,3)=' ') or (copy(MaskEdit1.Text,5,3)=' ') or (copy(MaskEdit1.Text,9,3)=' ') or (copy(MaskEdit1.Text,13,3)=' ') then
begin
showmessage('請注意,不能有空域值') ;
MaskEdit1.SetFocus;
end;
if (copy(MaskEdit1.Text,1,3)<>' ') and (copy(MaskEdit1.Text,5,3)<>' ') and (copy(MaskEdit1.Text,9,3)<>' ') and (copy(MaskEdit1.Text,13,3)<>' ') then
begin
ip1:=strtoint(trim(copy(MaskEdit1.Text,1,3)));
ip2:=strtoint(trim(copy(MaskEdit1.Text,5,3)));
ip3:=strtoint(trim(copy(MaskEdit1.Text,9,3)));
ip4:=strtoint(trim(copy(MaskEdit1.Text,13,3)));
if (ip1<0) or (ip1>254) or (ip2<0) or (ip2>254) or(ip3<0) or (ip3>254) or (ip4<0) or (ip4>254) then
begin
showmessage('您的輸入不正確,請重新輸入!');
MaskEdit1.SetFocus;
end;
end;
end;
右側網絡替換功能的編制相對簡單些,通過兩個radiobutton控件選擇要使用哪個網絡,然後點擊"確定"按鈕即可。
procedure TForm1.Button1Click(Sender: TObject); //"確定"按鈕的單擊事件
begin
if RadioButton1.Checked then winexec('netsh -f netcfg1.txt',sw_normal) ;
if RadioButton2.Checked then winexec('netsh -f netcfg2.txt',sw_normal) ;
end;
這樣,功能就實現了,這個小軟件簡單易用,在我周圍的同學中已經廣為流傳,希望大家能夠從中學習到簡單易行的網絡配置方法。