現在學校和公司的朋友們大都遇到過這種情況吧:電腦需要經常在互連網和區域網路之間轉換,每次轉換除了換網線外,還需要修改網路設定(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;
這樣,功能就實現了,這個小軟體簡單易用,在我周圍的同學中已經廣為流傳,希望大家能夠從中學習到簡單易行的網路設定方法。