用Delphi編寫IP地址轉換器

來源:互聯網
上載者:User

現在學校和公司的朋友們大都遇到過這種情況吧:電腦需要經常在互連網和區域網路之間轉換,每次轉換除了換網線外,還需要修改網路設定(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;

這樣,功能就實現了,這個小軟體簡單易用,在我周圍的同學中已經廣為流傳,希望大家能夠從中學習到簡單易行的網路設定方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.