这是我用过的一个。。。。去参改
function BrowseForComputer(const winhandle : THANDLE; const Title : string) : string;
var
BrowseInfo: TBrowseInfo;
IDRoot: PItemIDList;
Path:array[0..MAX_PATH] of Char; //被选择的计算机名
S:String;
MyHost:PHostEnt;
I:byte;
begin
S:='';
SHGetSpecialFolderLocation(winHandle, CSIDL_NETWORK , IDRoot);//获取网上邻居ID列表
ZeroMemory(@BrowseInfo, SizeOf(TBrowseInfo)); //内存清零
ZeroMemory(@path[1], MAX_PATH); //内存清零
BrowseInfo.hwndOwner := winhandle;
BrowseInfo.pidlRoot := IDRoot;
BrowseInfo.lpszTitle := PChar(Title);
BrowseInfo.pszDisplayName := @path;
BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER;//or BIF_RETURNONLYFSDIRS
if SHBrowseForFolder(BrowseInfo)=nil then Exit;
{***以下根据计算机名获取IP地址***}
MyHost:=GetHostByName(@Path[0]);
if MyHost=nil then S:='该计算机已关闭' else
for I:=1 to 4 do S:=S+IntToStr(Ord(MyHost.h_addr^[I-1]))+'.';
Result:=Copy(S,1,Length(S)-1);
end;
function GetIPByName(AName: String): 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;
begin
WSAStartup($101, GInitData);
Result := '';
StrPCopy(Buffer, AName);
phe := GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
Result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;