?? unmain.~pas
字號(hào):
Rg:=TRegistry.Create;
try
rg.RootKey:=HKEY_LOCAL_MACHINE;
if Rg.OpenKey('\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\'+Adapter.AdapterName+'\Connection',false) then
Result:=Rg.ReadString('Name');
finally
rg.Free;
end;
end;
procedure TfmNetWorkChange.ReadIniDataToTreeView(AdapterName:string);
var
RF:TIniFile;
FName:String;
FNameList:TStrings;
i:integer;
FNode:TTreeNode;
begin
FIpTree.Items.Clear;
fName:=ExtractFilePath(Application.ExeName)+'net.ini';
if not FileExists(FName) then exit;
rf:=TIniFile.Create(FName);
FNameList:=TStringList.Create;
RF.ReadSections(FNameList);
try
for i:=0 to FNameList.Count-1 do
begin
if RF.ReadString(FNameList.Strings[i],'Name','')=AdapterName then begin
FNode:=FIpTree.items.Add(nil,FNameList.Strings[i]);
if RF.ReadString(FNameList.Strings[i],'Name','')<>'' then
FIpTree.items.AddChild(fnode,RF.ReadString(FNameList.Strings[i],'Name',''));
if RF.ReadString(FNameList.Strings[i],'IP','')<>'' then
FIpTree.items.AddChild(fnode,RF.ReadString(FNameList.Strings[i],'IP',''));
if RF.ReadString(FNameList.Strings[i],'MASK','')<>'' then
FIpTree.items.AddChild(fnode,RF.ReadString(FNameList.Strings[i],'MASK',''));
if RF.ReadString(FNameList.Strings[i],'GATEWAY','')<>'' then
FIpTree.items.AddChild(fnode,RF.ReadString(FNameList.Strings[i],'GATEWAY',''));
if RF.ReadString(FNameList.Strings[i],'DNS1','')<>'' then
FIpTree.items.AddChild(fnode,RF.ReadString(FNameList.Strings[i],'DNS1',''));
if RF.ReadString(FNameList.Strings[i],'DNS2','')<>'' then
FIpTree.items.AddChild(fnode,RF.ReadString(FNameList.Strings[i],'DNS2',''));
end;
end;
finally
RF.Free;
end;
end;
procedure TfmNetWorkChange.BtnAppsetClick(Sender: TObject);
var
CmdStr:string;
fnode:TTreeNode;
i:integer;
begin
fnode:=FIpTree.Selected;
FmAni:=TFmAni.Create(Application);
FmAni.Canvas.Font.Size:=11;
FmAni.Canvas.Font.Color:=clred;
FmAni.Show;
FmAni.Canvas.TextOut(15,10,'程序正在應(yīng)用新配置,請(qǐng)稍候..');
FlashWindow(FmAni.Handle,true);
// Self.Hide;
if not Assigned(fnode) then Exit;
if fnode.HasChildren then begin
FmAni.Canvas.TextOut(15,10,'程序正在應(yīng)用新配置,請(qǐng)稍候....');
CmdStr:=format('netsh interface ip set address name=%s static %s %s %s 1',[fnode.Item[0].Text,fnode.Item[1].Text,fnode.Item[2].Text,fnode.Item[3].Text]);
// ShowMessage(CmdStr);
WinExecAndWait(cmdstr);
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候.......');
FlashWindow(FmAni.Handle,true);
if (fnode.Count=5) then begin
CmdStr:=Format('netsh interface ip set dns %s static %s',[fnode.Item[0].Text,fnode.Item[4].text]);
// ShowMessage(CmdStr);
WinExecAndWait(cmdstr);
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候..........');
FlashWindow(FmAni.Handle,true);
end;
if (fnode.Count=6) then begin
CmdStr:=Format('netsh interface ip delete dns %s all ',[fnode.Item[0].Text]);
WinExecAndWait(cmdstr);
CmdStr:=Format('netsh interface ip add dns %s %s ',[fnode.Item[0].Text,fnode.Item[4].text]);
// ShowMessage(CmdStr);
WinExecAndWait(cmdstr);
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候............');
FlashWindow(FmAni.Handle,true);
CmdStr:=Format('netsh interface ip add dns %s %s ',[fnode.Item[0].Text,fnode.Item[5].text]);
WinExecAndWait(cmdstr);
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候...............');
FlashWindow(FmAni.Handle,true);
// ShowMessage(CmdStr);
end;
end;
//
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候............完畢');
FlashWindow(FmAni.Handle,true);
sleep(1000);
// fmNetWorkChange.Show;
FmAni.Close;
btnRetryClick(Sender);
end;
procedure TfmNetWorkChange.BtnDelIniClick(Sender: TObject);
var
iFile:TIniFile;
FName:string;
begin
if AdapterList.ItemIndex<0 then exit;
FName:=ExtractFilePath(Application.ExeName)+'net.ini';
if FileExists(FName) then begin
iFile:=TIniFile.Create(FName);
iFile.EraseSection(FIpTree.Selected.Text);
iFile.UpdateFile;
iFile.Free;
ReadIniDataToTreeView(TAdapter(AdapterList.Items.Objects[AdapterList.ItemIndex]).Name);
end;
end;
{ TAdapter }
destructor TAdapter.Destroy;
var
i:integer;
begin
for i:=0 to IpMasklist.Count-1 do IpMasklist.Objects[i].Free;
for i:=0 to Dnslist.Count-1 do Dnslist.Objects[i].Free;
for i:=0 to CurrDns.Count-1 do CurrDns.Objects[i].Free;
for i:=0 to Gatewaylist.Count-1 do Gatewaylist.Objects[i].Free;
IpMasklist.Free;
Dnslist.Free;
CurrDns.Free;
Gatewaylist.Free;
inherited;
end;
procedure TfmNetWorkChange.btnActiveNetAdapterClick(Sender: TObject);
var
i:integer;
begin
if DevForm=nil then DevForm:=TDevForm.Create(Application);
DevForm.ShowModal;
sleep(1000);
btnRetryClick(Sender);
end;
procedure TfmNetWorkChange.btnRetryClick(Sender: TObject);
var
i:integer;
begin
GetApt;
for i:=0 to AdapterList.Items.Count-1 do AdapterList.Items[i].ImageIndex:=0;
Check(NIni,AdapterList);
end;
procedure TfmNetWorkChange.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
//canclose:=false;
end;
procedure TfmNetWorkChange.N3Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TfmNetWorkChange.N1Click(Sender: TObject);
begin
if Visible=false then ShowModal else JvTrayIconApp.ShowApplication;
// Application.ShowMainForm:=true;
//JvTrayIconApp.ShowApplication;
end;
procedure TfmNetWorkChange.Button5Click(Sender: TObject);
begin
JvTrayIconApp.HideApplication;
end;
procedure TfmNetWorkChange.FormCreate(Sender: TObject);
begin
IniMenuItem;
// btnRetryClick(Sender)
end;
procedure TfmNetWorkChange.IniMenuItem;
var
FName,DefaultIP,DefaultGateWay:string;
FItem:TMenuItem;
FList:TStrings;
FIni:TIniFile;
i:integer;
begin
GetApt;
FName:=ExtractFilePath(Application.ExeName)+'net.ini';
if FileExists(FName) then
begin
FList:=TStringList.Create;
FIni:=TIniFile.Create(FName);
try
FIni.ReadSections(FList);
for i:=0 to FList.Count-1 do
begin
FItem:=TMenuItem.Create(nil);
FItem.Caption:=FList.Strings[i];
FItem.Checked:=true;
FItem.OnClick:=ItemClick;
NIni.Add(FItem);
end;
finally
Fini.Free;
FList.Free
end;
end;
end;
procedure TfmNetWorkChange.ItemClick(sender: TObject);
var
FName,CmdStr:string;
FIni:TIniFile;
AName,FDNS1,FDNS2,AIP,AMask,AGateway,ADesc:string;
i:integer;
FState:boolean;
begin
//
if TMenuItem(sender).Checked then exit;
FState:=true;
FName:=ExtractFilePath(Application.ExeName)+'net.ini';
if FileExists(FName) then
begin
FIni:=TIniFile.Create(FName);
try
AName:=FIni.ReadString(TMenuItem(sender).Caption,'Name','');
AIP:=FIni.ReadString(TMenuItem(sender).Caption,'IP','');
AMask:=FIni.ReadString(TMenuItem(sender).Caption,'MASK','');
AGateway:=FIni.ReadString(TMenuItem(sender).Caption,'GateWay','');
ADesc:=FIni.ReadString(TMenuItem(sender).Caption,'Desc','');
FDNS1:=FIni.ReadString(TMenuItem(sender).Caption,'Dns1','');
FDNS2:=FIni.ReadString(TMenuItem(sender).Caption,'Dns2','');
finally
Fini.Free;
end;
for i:=0 to AdapterList.Items.Count-1 do
begin
if TAdapter(AdapterList.Items.Objects[i]).Description=ADesc then begin
FState:=true;
break;
end else FState:=false;
end;
if FState=false then begin
DevForm:=TDevForm.Create(Application);
DevForm.ShowModal;
sleep(1000);
btnRetryClick(Sender);
end;
FmAni:=TFmAni.Create(Application);
FmAni.Canvas.Font.Size:=11;
FmAni.Canvas.Font.Color:=clred;
FmAni.Show;
FmAni.Canvas.TextOut(15,10,'程序正在應(yīng)用新配置,請(qǐng)稍候..');
FlashWindow(FmAni.Handle,true);
FmAni.Canvas.TextOut(15,10,'程序正在應(yīng)用新配置,請(qǐng)稍候....');
CmdStr:=format('netsh interface ip set address name=%s static %s %s %s 1',[AName,AIP,AMask,AGateway]);
WinExecAndWait(cmdstr);
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候........');
FlashWindow(FmAni.Handle,true);
CmdStr:=Format('netsh interface ip delete dns %s all ',[AName]);
WinExecAndWait(cmdstr);
if FDNS1<>'' then begin
CmdStr:=Format('netsh interface ip add dns %s %s',[AName,FDNS1]);
WinExecAndWait(cmdstr);
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候...........');
FlashWindow(FmAni.Handle,true);
end;
if FDNS2<>'' then begin
CmdStr:=Format('netsh interface ip add dns %s %s ',[AName,FDNS2]);
WinExecAndWait(cmdstr);
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候..............');
FlashWindow(FmAni.Handle,true);
end;
FmAni.Canvas.TextOut(10,10,'程序正在應(yīng)用新配置,請(qǐng)稍候..............完畢');
FlashWindow(FmAni.Handle,true);
sleep(1000);
FmAni.Close;
btnRetryClick(Sender);
end;
end;
procedure TfmNetWorkChange.Check(AMenuItem: TMenuItem;
AList: TJvImageComboBox);
var
i,j:integer;
FName,DefaultGateWay,DefaultIP,ADefaultGateWay,ADefaultIP:string;
Fini:TIniFile;
begin
FName:=ExtractFilePath(Application.ExeName)+'net.ini';
if FileExists(FName) then begin
try
Fini:=TIniFile.Create(FName);
for i:=0 to AMenuItem.Count-1 do AMenuItem.Items[i].Checked:=false;
for i:=0 to AMenuItem.Count-1 do
begin
DefaultIP:=FIni.ReadString(AMenuItem.Items[i].Caption,'IP','');
DefaultGateWay:=fini.ReadString(AMenuItem.Items[i].Caption,'GateWay','');
for j:=0 to AList.Items.Count-1 do
begin
ADefaultGateWay:=TAdapter(AdapterList.Items.Objects[j]).Gatewaylist.Strings[0];
ADefaultIP:=TIP(TAdapter(AdapterList.Items.Objects[j]).IpMasklist.Objects[0]).IP;
if ADefaultIP=DefaultIP then
if ADefaultGateWay=DefaultGateWay then begin
AMenuItem.Items[i].Checked:=true;
break;
end;
end;
end;
finally
Fini.Free;
end;
end;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -