现在学校和公司的朋友们大都遇到过这种情况吧
计算机需要经常在互联网和局域网之间转换
每次转换除了换网线外
还需要修改网络配置(IP地址
网关
DNS等等)
相当麻烦
如何能在一个窗口中一步实现呢?有些公司提供了软件如
IPChanger
EasyProxy等等
但是很遗憾这些软件都不是免费软件
只能试用一段时间
因此笔者经过尝试调试出一个非常简单易行的方法供大家参考使用
首先看一下原理
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;
这样功能就实现了这个小软件简单易用在我周围的同学中已经广为流传希望大家能够从中学习到简单易行的网