其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

用Delphi编制IP地址转换器


发布日期:2023年07月21日
 
用Delphi编制IP地址转换器
现在学校和公司的朋友们大都遇到过这种情况吧计算机需要经常在互联网和局域网之间转换每次转换除了换网线外还需要修改网络配置(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;

这样功能就实现了这个小软件简单易用在我周围的同学中已经广为流传希望大家能够从中学习到简单易行的网               

上一篇:Dll 中导出类 --Delphi 实战[3]

下一篇:关于 Delphi 中压缩流和解压流的应用