求局域网内所有IP和计算机名下拉列表

frjfanding123 2008-10-17 11:10:09
求局域网内所有IP和计算机名下拉列表
最好是写在一个方法里我一调的
...全文
65 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
frjfanding123 2008-11-04
  • 打赏
  • 举报
回复
谢谢,盒子里弄了一个
panrongzeng 2008-10-20
  • 打赏
  • 举报
回复
procedure Tfeiyan.GetServerList(List: TStrings);
Type
{$H+}
PMyRec=^MyRec;
MyRec=Record
dwScope:Integer;
dwType:Integer;
dwDisplayType:Integer;
dwUsage:Integer;
LocalName:String;
RemoteName:String;
Comment:String;
Provider:String;
End;
{H-}
Var
NetResource : TNetResource;
TempRec: PMyRec;
Buf:Pointer;
Count,BufSize,Res:DWORD;
lphEnum:THandle;
p:PNetResourceArr;
i, j :SmallInt;
NetworkTypeList:TList;
begin
NetworkTypeList := TList.Create;
List.BeginUpdate;
List.Clear;
GetMem(Buf,8192);
Try
Res:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, Nil,lphEnum);
If Res <> 0 Then Raise Exception(Res);
Count := $FFFFFFFF;
BufSize := 8192;
Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
If Res = ERROR_NO_MORE_ITEMS Then Exit;
If (Res <> 0) Then Raise Exception(Res);
P := PNetResourceArr(Buf);
For I := 0 To Count - 1 Do
Begin
New(TempRec);
TempRec^.dwScope := P^.dwScope;
TempRec^.dwType := P^.dwType ;
TempRec^.dwDisplayType := P^.dwDisplayType ;
TempRec^.dwUsage := P^.dwUsage ;
TempRec^.LocalName := StrPas(P^.lpLocalName);
TempRec^.RemoteName := StrPas(P^.lpRemoteName);
TempRec^.Comment := StrPas(P^.lpComment);
TempRec^.Provider := StrPas(P^.lpProvider);
NetworkTypeList.Add(TempRec);
Inc(P);
End;
Res := WNetCloseEnum(lphEnum);
If Res <> 0 Then Raise Exception(Res);
For J := 0 To NetworkTypeList.Count-1 Do
Begin
TempRec := NetworkTypeList.Items[J];
NetResource := TNetResource(TempRec^);
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);
If Res <> 0 Then Raise Exception(Res);
While true Do
Begin
Count := $FFFFFFFF;
BufSize := 8192;
Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
If Res = ERROR_NO_MORE_ITEMS Then Break;
If (Res <> 0) Then Raise Exception(Res);
P := PNetResourceArr(Buf);
For I := 0 To Count - 1 Do
Begin
List.Add(P^.lpRemoteName);
Inc(P);
End;
End;
End;
Res := WNetCloseEnum(lphEnum);
If Res <> 0 Then Raise Exception(Res);
Finally
FreeMem(Buf);
NetworkTypeList.Destroy;
End;
List.EndUpdate;
end;
以上是获得计算机名
function Tfeiyan.nametoip(name: string): string;
var
WSAData:TWSAData;
HostEnt:PHostEnt;
begin
result:='';
WSAStartup(2,WSAData);
HostEnt:=gethostbyname(PChar(name));
if HostEnt<>nil then
begin
with HostEnt^ do
result:=Format('%d.%d.%d.%d',[Byte(h_addr^[0]),Byte(h_addr^[1]),Byte(h_addr^[2]),Byte(h_addr^[3])]);
end;
WSACleanup;
end;
根据计算机名获取IP
kye_jufei 2008-10-20
  • 打赏
  • 举报
回复

參考此貼代碼: http://topic.csdn.net/t/20040508/10/3040713.html
kye_jufei 2008-10-20
  • 打赏
  • 举报
回复

參考此貼代碼: http://topic.csdn.net/t/20040508/10/3040713.html
五维思考 2008-10-17
  • 打赏
  • 举报
回复
楼主太吝啬了吧,才20分,最起码也要50分,最好100分,加分我给你一个
fangsp 2008-10-17
  • 打赏
  • 举报
回复
www.2ccc.com里应该有的
fhb2007 2008-10-17
  • 打赏
  • 举报
回复
Delphi盒子当中有例子
frjfanding123 2008-10-17
  • 打赏
  • 举报
回复
有控件也可以

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧