动态改变计算机的IP。(50分)

  • 主题发起人 主题发起人 雨之子
  • 开始时间 开始时间

雨之子

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用一个按钮动态改变计算机的IP
 
逻辑IP设置,启动逻辑IP命令:

Win2000
netsh interface ip add address name="本地连接" ip mask
关闭逻辑IP命令:
netsh interface ip delete address name="本地连接" ip
例如:

netsh interface ip add address name="本地连接" 192.168.20.19 255.255.255.0
netsh interface ip delete address name="本地连接" 192.168.20.19
netsh interface ip set address name="本地连接" source=dhcp

英文版设置位动态IP:
netsh interface ip set address name="Local Area Connection" source=dhcp


netsh>interface ip set address ?

用法: set address [name=]<string>
[[source=]dhcp |
[source=] static [addr=]IP address [mask=]IP subnet mask]
[[gateway=]<IP address>|none [gwmetric=]integer]


参数:

标记 值
name - 接口名称。
source - 下列值之一:
dhcp: 对于指定接口,设置用 DHCP 配置 IP
地址。
static: 设置使用本地静态配置设置 IP
地址。

gateway - 下列值之一:
<IP address>: 您设置的 IP 地址的指定默认网关。
none: 不设置默认网关。
gwmetric - 默认网关的跃点数。如果网关设置为 'none',则不应设置此字段。
只有在 'source' 为 'static' 时才设置下列选项:

addr - 指定接口的 IP 地址。
mask - 指定 IP 地址的子网掩码。

注释 : 用来将 IP 地址配置模式从 DHCP 模式改为 static,或从 static
模式改为 DHCP。用静态 IP 地址在接口上添加 IP 地址,或添加
默认网关。
示例 :

set address name=&quot;Local Area Connection&quot; source=dhcp
set address local static 10.0.0.9 255.0.0.0 10.0.0.1 1


其实就是执行一条命令就行了。
 
TO weiliu:
能给一个完整的程序吗?我有点看不懂。谢谢了。分不够可以在给,只要能解决问题就行。
 
IP地址好改,只需要调用命令就行了:
'netsh interface ip set address '+conname+' static '+IP+' '+mask+' '+gateway+' 1';//这个是指定IP
'netsh interface ip set dns '+conname+' static '+dns;//这个是自动获取

conname是网络连接名,一般是“本地连接”, IP是你要改为的IP地址 mask是子网掩码,gateway是网关 dns是DNS服务器IP


这样调用:
uses shellapi;
var
exehwnd:HWND;


addstr:='netsh interface ip set address '+conname+' static '+IP+' '+mask+' '+gateway+' 1';
exehwnd:=shellexecute(application.Handle,'open',pchar(addstr),nil,nil,sw_HIDE);
waitforsingleobject(exeHwnd,infinite);
 
to hs-kill
我的程序肛码如下,可是不能改,帮忙看下给改一下吧。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, shellapi;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
exehwnd:HWND;
addstr: string;
begin‘
addstr:='netsh interface ip set address '+'本地连接+' static '+'10.5.15.60'+' '+'255.255.255.0'+' '+'10.5.15.1'+' 1';
exehwnd:=shellexecute(application.Handle,'open',pchar(addstr),nil,nil,sw_HIDE);
waitforsingleobject(exeHwnd,infinite);
end;

end.
 
建立一个临时的cmd文件,通过他运行这些命令
 
各位有谁能给我一个完整的程序。通过一按钮的ONCLICK事件就行。如果解决了,必有重谢!我现在急用。
 
哦 抱歉 昨天晚上有点晕,把原来的东西就发上来了,有点错误

下面的应该可以用

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, shellapi;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
exehwnd:HWND;
addstr: string;
begin //指定IP
addstr:='interface ip set address '+'本地连接'+' static '+'10.5.15.60'+' '+'255.255.255.0'+' '+'10.5.15.1'+' 1';
exehwnd:=shellexecute(application.Handle,'open',pchar('netsh'),pchar(addstr),nil,sw_hide);
waitforsingleobject(exeHwnd,infinite);
messagebox(application.Handle,'修改完成。','提示',mb_ok);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
exehwnd:HWND;
addstr: string;
begin //自动获取IP
addstr:='interface ip set address '+'本地连接'+' source=dhcp';
exehwnd:=shellexecute(application.Handle,'open',pchar('netsh'),pchar(addstr),nil,sw_hide);
waitforsingleobject(exeHwnd,infinite);
messagebox(application.Handle,'修改完成。','提示',mb_ok);
end;

end.
 
ok.解决了。谢谢了。
 
后退
顶部