在程序中读取机器的DNS的ip地址,要求在win98,nt,2000,xp下都适用。(300分)

  • 主题发起人 主题发起人 chenziyi
  • 开始时间 开始时间
C

chenziyi

Unregistered / Unconfirmed
GUEST, unregistred user!
在程序中读取机器的DNS的ip地址,要求在win98,nt,2000,xp下都适用。
希望有源代码.
 

//获取本机IP地址
//InternetIP=TRUE,则获取Internet的IP地址
Function GetLocalIp(InternetIP:boolean):String;
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
IP: String;
begin
Screen.Cursor := crHourGlass;
try
WSAStartup($101, GInitData);
IP:='0.0.0.0';
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then
begin
ShowMessage(IP);
Result:=IP;
Exit;
end;
pPtr := PaPInAddr(phe^.h_addr_list);
if InternetIP then
begin
I := 0;
while pPtr^ <> nil do
begin
IP := inet_ntoa(pptr^^);
Inc(I);
end;
end
else
IP := inet_ntoa(pptr^[0]^);
WSACleanup;
Result:=IP;//如果上网则为上网ip否则是网卡ip
finally
Screen.Cursor := crDefault;
end;
end;

 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=905329

看看。。有例子。。
 
在注册表中
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/MSTCP
读取NameServer键值
 
To CJF:
我看了一下你提到的贴子,在win98下的确可行,但是在nt,2000,xp下可行吗?
哪位大虾可以试一下,我只有win98。
 
To CJF:
你在原贴子上说可以看indy的例子,调用api,请问是哪个例子?
 
多人接受答案了。
 
后退
顶部