?? ipchgfrm.pas
字號:
unit IpChgFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IPEdit, IniFiles, shellapi, WinSkinData, Menus,
IdBaseComponent, IdComponent, IdIPWatch, ComCtrls, ExtCtrls, jpeg,
Buttons,Registry, CoolTrayIcon;
type
TForm1 = class(TForm)
BtSaveIp: TSpeedButton;
IPEdit1: TIPEdit;
IPEdit2: TIPEdit;
IPEdit3: TIPEdit;
IPEdit4: TIPEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
GroupBox1: TPanel;
BtChgIP: TSpeedButton;
IPEdit5: TIPEdit;
Label5: TLabel;
MainMenu1: TMainMenu;
F1: TMenuItem;
Q1: TMenuItem;
H1: TMenuItem;
A1: TMenuItem;
StatusBar1: TStatusBar;
IdIPWatch1: TIdIPWatch;
Edit1: TEdit;
Label13: TLabel;
IP1: TMenuItem;
RadioGroup1: TRadioGroup;
Panel1: TPanel;
Memo1: TMemo;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Bevel1: TBevel;
BtExit: TSpeedButton;
WRun1: TMenuItem;
CoolTrayIcon1: TCoolTrayIcon;
PopupMenu1: TPopupMenu;
S1: TMenuItem;
N1: TMenuItem;
x1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure BtSaveIpClick(Sender: TObject);
procedure BtChgIPClick(Sender: TObject);
procedure Q1Click(Sender: TObject);
procedure A1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure IP1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure BtExitClick(Sender: TObject);
procedure IPEdit1Change(Sender: TObject);
procedure WRun1Click(Sender: TObject);
procedure x1Click(Sender: TObject);
procedure S1Click(Sender: TObject);
procedure CoolTrayIcon1Startup(Sender: TObject;
var ShowMainForm: Boolean);
private
procedure SaveIpSetToRunFile();
procedure ShowIpAddrNameGroup();
procedure SaveIpNameList();
procedure LoadIpNameList();
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
myinifile:TInifile;
dir:string;
implementation
uses ExecAndWait;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
Var
IpStr,nmStr:string;
I:integer;
Reg: TRegistry;
begin
Panel1.Top:=50;
Panel1.left:=50;
IpStr:=IdIPWatch1.LocalIP;
dir:=extractfiledir(application.ExeName);
myinifile:=tinifile.Create(dir+'\'+'config.ini');
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True) then
begin
WRun1.Checked:=Reg.ValueExists('GxzNetIpChg');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
LoadIpNameList();
ShowIpAddrNameGroup();
for i:=0 to RadioGroup1.Items.Count-1 do
begin
nmStr:='IpAddr'+inttostr(i);
if IpStr=myinifile.readstring(nmStr,'IP地址','0') then
begin
RadioGroup1.ItemIndex:=i;
break;
end;
end;
RadioGroup1Click(Sender);
end;
procedure TForm1.SaveIpSetToRunFile();
Var
F : Textfile; //申明變量
begin
//----下面代碼生成 netIpcfg.txt 配置文件
AssignFile(F,'netIpcfg.txt');
ReWrite(F); {生成配置文件 netIpcfg.txt}
Writeln(F,'');
Writeln(F,'');
Writeln(F,'# ---------------------------------- ');
Writeln(F,'# 接口 IP 配置');
Writeln(F,'# ---------------------------------- ');
Writeln(F,'pushd interface ip');
Writeln(F,'');
Writeln(F,'');
Writeln(F,'# "本地連接" 的接口 IP 配置');
Writeln(F,'');
Writeln(F,'set address name="'+Edit1.Text+'" source=static addr='+IPedit1.IPstring+' mask='+IPedit2.IPstring+'');
Writeln(F,'set address name="本地連接" gateway='+IPedit3.IPstring+' gwmetric=1');
Writeln(F,'set dns name="本地連接" source=static addr='+IPedit4.IPstring+' register=PRIMARY');
Writeln(F,'add dns name="本地連接" addr='+IPedit5.IPstring+' index=2');
Writeln(F,'set wins name="本地連接" source=static addr=none');
Writeln(F,'');
Writeln(F,'');
Writeln(F,'popd');
Writeln(F,'# 接口 IP 配置結(jié)束');
Closefile(F); //釋放變量F
//----文件生成完畢
end;
procedure DelayMsecs(msecs:integer);
var
FirstTickCount,NowTickCount:longint;
begin
FirstTickCount:=GetTickCount;
repeat
Application.ProcessMessages;
NowTickCount:=GetTickCount;
until (abs(NowTickCount-FirstTickCount) >= Longint(msecs));
end;
procedure TForm1.BtChgIPClick(Sender: TObject);
begin
BtChgIP.Enabled:=False;
BtExit.Enabled:=False;
SaveIpSetToRunFile();
statusbar1.Panels[0].Text:=' 正在進行IP地址修改,請稍等...';
Application.ProcessMessages;
RunExeAndWait('netsh -f netIpcfg.txt');
statusbar1.Panels[0].Text:=' IP地址已修改成: ' +IdIPWatch1.LocalIP;
ShowMessage('IP地址修改完成');
BtChgIP.Enabled:=True;
BtExit.Enabled:=True;
end;
procedure TForm1.Q1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.A1Click(Sender: TObject);
begin
application.MessageBox(' IP地址轉(zhuǎn)換工具 Ver 2.10 '#13#13' 高興釗'#13#13' 2006.8.25','關(guān)于',64);
end;
procedure TForm1.ShowIpAddrNameGroup();
begin
case RadioGroup1.Items.Count of
2,3: begin
RadioGroup1.Top:=24;
RadioGroup1.Height:=96;
BtSaveIp.Top:=132;
BtChgIP.Top:=BtSaveIp.Top+36;
BtExit.Top:=BtChgIP.Top+36;
end;
4,5: begin
RadioGroup1.Top:=12;
RadioGroup1.Height:=128;
BtSaveIp.Top:=146;
BtChgIP.Top:=BtSaveIp.Top+32;
BtExit.Top:=BtChgIP.Top+32;
end;
else begin
RadioGroup1.Top:=8;
RadioGroup1.Height:=140;
BtSaveIp.Top:=152;
BtChgIP.Top:=BtSaveIp.Top+30;
BtExit.Top:=BtChgIP.Top+30;
end;
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
strlist:TStringList;
i:integer;
begin
strlist:=TStringList.Create;
try
for i:=0 to Memo1.Lines.Count-1 do
if length(trim(Memo1.Lines[i]))>0 then
begin
if strlist.Count<10 then
strlist.Add(trim(Memo1.Lines[i]))
else
begin
application.MessageBox('地址名列表太多了(>10),想忙暈我呀?!不理你了!!! ','討厭的家伙',16);
break;
end;
end;
if strlist.Count>1 then
begin
RadioGroup1.Items.Assign(strlist);
ShowIpAddrNameGroup();
SaveIpNameList();
Panel1.Visible:=False;
end
else
application.MessageBox('如果1個IP地址就沒必要使用IP地址轉(zhuǎn)換了^_^ ','傻了吧',16);
finally
strlist.Free;
end;
end;
procedure TForm1.IP1Click(Sender: TObject);
begin
Memo1.Lines.Assign(RadioGroup1.Items);
Panel1.Visible:=True;
Memo1.SetFocus;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Panel1.Visible:=False;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
Var
nmStr:string;
begin
statusbar1.Panels[0].Text:=' 當(dāng)前IP地址: '+IdIPWatch1.LocalIP;
Edit1.Text:=myinifile.readstring('網(wǎng)卡配置','網(wǎng)卡名','0');
nmStr:='IpAddr'+inttostr(RadioGroup1.ItemIndex);
IPedit1.IPstring:=myinifile.readstring(nmStr,'IP地址','0');
IPedit2.IPstring:=myinifile.readstring(nmStr,'子網(wǎng)掩碼','0');
IPedit3.IPstring:=myinifile.readstring(nmStr,'默認網(wǎng)關(guān)','0');
IPedit4.IPstring:=myinifile.readstring(nmStr,'首選DNS','0');
IPedit5.IPstring:=myinifile.readstring(nmStr,'備用DNS','0');
BtSaveIp.Enabled:=False;
end;
procedure TForm1.BtSaveIpClick(Sender: TObject);
Var
nmStr:string;
begin
nmStr:='IpAddr'+inttostr(RadioGroup1.ItemIndex);
myinifile.writestring('網(wǎng)卡配置','網(wǎng)卡名',Edit1.Text);
myinifile.writestring(nmStr,'IP地址',IPedit1.IPstring);
myinifile.writestring(nmStr,'子網(wǎng)掩碼',IPedit2.IPstring);
myinifile.writestring(nmStr,'默認網(wǎng)關(guān)',IPedit3.IPstring);
myinifile.writestring(nmStr,'首選DNS',IPedit4.IPstring);
myinifile.writestring(nmStr,'備用DNS',IPedit5.IPstring);
ShowMessage(RadioGroup1.Items[RadioGroup1.ItemIndex] + ' IP地址已保存');
end;
procedure TForm1.LoadIpNameList();
Var
i,ii:integer;
begin
ii:=StrToInt(myinifile.readstring('IpNameList','IpNum','0'));
if ii>0 then
begin
RadioGroup1.Items.Clear;
for i:=0 to ii-1 do
RadioGroup1.Items.Add(myinifile.readstring('IpNameList','IpName'+inttostr(i),'IpName'+inttostr(i)));
end;
RadioGroup1.ItemIndex:=0;
end;
procedure TForm1.SaveIpNameList();
Var
i:integer;
begin
myinifile.writestring('IpNameList','IpNum',inttostr(RadioGroup1.Items.Count));
for i:=0 to RadioGroup1.Items.Count-1 do
myinifile.writestring('IpNameList','IpName'+inttostr(i),RadioGroup1.Items[i]);
end;
procedure TForm1.BtExitClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.IPEdit1Change(Sender: TObject);
begin
if not BtSaveIp.Enabled then
BtSaveIp.Enabled:=True;
end;
procedure TForm1.WRun1Click(Sender: TObject);
var
Reg: TRegistry;
begin
WRun1.Checked:=not WRun1.Checked;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True) then
begin
if WRun1.Checked then
Reg.WriteString('GxzNetIpChg','"' + ParamStr(0) + '" -h')
else
Reg.DeleteValue('GxzNetIpChg');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
procedure TForm1.x1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.S1Click(Sender: TObject);
begin
{ if Application.MainForm.Visible then
CoolTrayIcon1.HideMainForm
else CoolTrayIcon1.ShowMainForm;}
CoolTrayIcon1.ShowMainForm;
end;
procedure TForm1.CoolTrayIcon1Startup(Sender: TObject;
var ShowMainForm: Boolean);
begin
CoolTrayIcon1.IconVisible := True;
if not ((ParamCount>0) and (LowerCase(ParamStr(1)) = '-h')) then
begin
ShowMainForm:=True;
end;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -