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