uses Winsock;procedure ShowHostName;
var
wVersionRequested : WORD;
wsaData : TWSAData;
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
{启动 WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);{计算机名}
GetHostName(@s, 128);
p := GetHostByName(@s);
ShowMessage(Format('Computer name is ''%s''.', [p^.h_Name]));{IP地址}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
ShowMessage(Format('IP address is %s.',[p2])); WSACleanup;
end;
var
wVersionRequested : WORD;
wsaData : TWSAData;
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
{启动 WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);{计算机名}
GetHostName(@s, 128);
p := GetHostByName(@s);
ShowMessage(Format('Computer name is ''%s''.', [p^.h_Name]));{IP地址}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
ShowMessage(Format('IP address is %s.',[p2])); WSACleanup;
end;
其实还有多种方法来得到ip
temp:string;
begin
temp:='c:\temp.txt';
if fileexists(temp) then
deletefile(temp);
winexec(pchar('command.com /c ipconfig/all>'+temp),sw_hide);
if not fileexists(temp) then
sleep(1000);
try
memo1.lines.loadfromfile(tem);
except
end;
end;
var
i:integer;
errcode:integer;
netres:array[0..1023] of netresource;
enumhandle:thandle;
enumentries:dword;
buffersize:dword;
begin
begin
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=nil;
lpcomment :=nil;
lpprovider :=nil;
end; // 获取所有的域
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
if errcode=NO_ERROR then
begin
enumentries:=1024;
buffersize:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
end;
ListBox1.Items.Text:='';
if errcode=No_Error then
begin
for i:=0 to High(netres)-1 do
if netres[i].dwType<>0 then
if netres[i].lpRemoteName<>'' then
ListBox1.Items.Add(netres[i].lpRemoteName);
end;
end;procedure Tcontrolcenter.ListBox1Click(Sender: TObject);
var
i:integer;
errcode:integer;
netres:array[0..1023] of netresource;
enumhandle:thandle;
enumentries:dword;
buffersize:dword;
begin
if ListBox1.Items.Strings[ListBox1.ItemIndex]='' then
begin
Exit;
end;
with netres[0] do
begin
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(ListBox1.Items.Strings[ListBox1.ItemIndex]);
lpcomment :=nil;
lpprovider :=nil;
end;// 获取所有的计算机
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
if errcode=NO_ERROR then
begin
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
end; ListBox2.Items.Text:='';
if errcode=No_Error then
begin
for i:=0 to High(netres)-1 do
begin
if netres[i].dwType<>02 then
if netres[i].lpRemoteName<>'' then
ListBox2.Items.Add(netres[i].lpRemoteName);
end;
end;
end;
这个资料是从哪里看到的,我也忘了
johnsonrao(johnson) 的最好