熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

用Delphi編制IP地址轉換器

2013-11-23 17:42:47  來源: Delphi編程 
  現在學校和公司的朋友們大都遇到過這種情況吧計算機需要經常在互聯網和局域網之間轉換每次轉換除了換網線外還需要修改網絡配置(IP地址網關DNS等等)相當麻煩如何能在一個窗口中一步實現呢?有些公司提供了軟件如IPChangerEasyProxy等等但是很遺憾這些軟件都不是免費軟件只能試用一段時間

  因此筆者經過嘗試調試出一個非常簡單易行的方法供大家參考使用

  首先看一下原理

  Window的netsh命令通過創建和調用記錄網絡配置的文本文件即可修改網絡配置主要包括一下兩個命令

Netsh interface dump > 相對路徑\ netcfgtxt

  這條命令可以將計算機現有的網絡配置保存在netcfgtxt文件中

Netsh f netcfgtxt

  這條命令即可將netcfgtxt文件中保存的網絡配置應用到計算機中

  基於以上的兩條命令筆者利用Delphi編制小程序將它進一步完善運行結果如下圖所示



  如上圖所示小軟件主要功能分成兩部分網絡設置和網絡替換因為一個計算機絕大多數是在兩個網絡中互換所以本程序只實現了兩個網絡的互換更多的網絡間互換道理是相同的

  網絡設置互聯網局域網兩個Button的單擊事件是將左側網絡設置區的IP地址網關DNS等信息記錄到文本中其中遇到的兩個主要困難是IP地址的錄入時的出錯情況處理和保存文本文件

代碼如下


procedure TFormBitBtnClick(Sender: TObject); //局域網按鈕的單擊事件
begin
   FileAppendProc();
   RadioButtonChecked:=true;
end;
procedure TFormFileAppendProc(); //保存文件的函數
 var NetFile : TextFile;
 NetFilename : string;
 FileAppendtempStr : string;
begin
   NetFilename :=netcfgtxt;
   FileAppend :=S+MaskEditText+S+MaskEditText+S+MaskEditText+S+S;
   //MessageDlg(This is commend+FileAppendmtInformation[mbOK]);
 AssignFile(Netfilenettxt); //nettxt文件要放在應用程序的同一目錄中
 Reset(NetFile);
   begin
     try
        MemoLinesText:=;
        while not Eof(NetFile) do
        begin
           Readln(NetFiletempStr);
           MemoLinesAdd(tempStr) ;
          end;
        finally
         begin
            CloseFile(NetFile);
           end;
      end;
      AssignFile(NetfileNetFilename);
      Rewrite(NetFile);
      try
         Writeln(NetFile);
         finally
           CloseFile(NetFile);
        end;
         MemoLinesAdd(FileAppend);
         MemoLinesSaveToFile(NetFilename);
      end;
    end;
    
    procedure TFormMaskEditExit(Sender: TObject); //IP地址輸入出錯處理
 var ipipipip: Integer;
    begin
       if (copy(MaskEditText)= ) or (copy(MaskEditText)= ) or  (copy(MaskEditText)= ) or (copy(MaskEditText)= ) then
       begin
          showmessage(請注意不能有空域值) ;
          MaskEditSetFocus;
         end;
       if (copy(MaskEditText)<> ) and (copy(MaskEditText)<> ) and   (copy(MaskEditText)<> ) and (copy(MaskEditText)<> ) then
       begin
          ip:=strtoint(trim(copy(MaskEditText)));
          ip:=strtoint(trim(copy(MaskEditText)));
          ip:=strtoint(trim(copy(MaskEditText)));
          ip:=strtoint(trim(copy(MaskEditText)));
          if (ip<) or (ip>) or (ip<) or (ip>) or(ip<) or (ip>) or (ip<) or (ip>) then
          begin
             showmessage(您的輸入不正確請重新輸入!);
             MaskEditSetFocus;
            end;
         end;
    end;


  右側網絡替換功能的編制相對簡單些通過兩個radiobutton控件選擇要使用哪個網絡然後點擊確定按鈕即可


procedure TFormButtonClick(Sender: TObject); //確定按鈕的單擊事件
begin
    if RadioButtonChecked then winexec(netsh f netcfgtxtsw_normal) ;
    if RadioButtonChecked then winexec(netsh f netcfgtxtsw_normal) ;
end;

  這樣功能就實現了這個小軟件簡單易用在我周圍的同學中已經廣為流傳希望大家能夠從中學習到簡單易行的網
From:http://tw.wingwit.com/Article/program/Delphi/201311/24934.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.