1、DELPHI7网络函数大全网络函数大全 =功 能: 网络函数库时 间: 2002/10/02版 本: 1.0=unit Net;interfaceusesSysUtils,Windows,dialogs,winsock,Classes,ComObj,WinInet;/得到本机的局域网Ip地址Function GetLocalIp(var LocalIp:string): Boolean;/通过Ip返回机器名Function GetNameByIPAddr(IPAddr: string; var MacName: string): Boolean ;/获取网络中SQLServer列表Functi
2、on GetSQLServerList(var List: Tstringlist): Boolean;/获取网络中的所有网络类型Function GetNetList(var List: Tstringlist): Boolean;/获取网络中的工作组Function GetGroupList(var List: TStringList): Boolean;/获取工作组中所有计算机Function GetUsers(GroupName: string; var List: TStringList): Boolean;/获取网络中的资源Function GetUserResource(IpAd
3、dr: string; var List: TStringList): Boolean;/映射网络驱动器Function NetAddConnection(NetPath: Pchar; PassWord: Pchar;LocalPath: Pchar): Boolean;/检测网络状态Function CheckNet(IpAddr:string): Boolean;/检测机器是否登入网络Function CheckMacAttachNet: Boolean;/判断Ip协议有没有安装 这个函数有问题Function IsIPInstalled : boolean;/检测机器是否上网Funct
4、ion InternetConnected: Boolean;implementation=功 能: 检测机器是否登入网络参 数: 无返回值: 成功: True 失败: False备 注:版 本:1.0 2002/10/03 09:55:00=Function CheckMacAttachNet: Boolean;beginResult := False;if GetSystemMetrics(SM_NETWORK) 0 thenResult := True;end;=功 能: 返回本机的局域网Ip地址参 数: 无返回值: 成功: True, 并填充LocalIp 失败: False备 注:版
5、 本:1.0 2002/10/02 21:05:00=function GetLocalIP(var LocalIp: string): Boolean;varHostEnt: PHostEnt;Ip: string;addr: pchar;Buffer: array 0.63 of char;GInitData: TWSADATA;beginResult := False;tryWSAStartup(2, GInitData);GetHostName(Buffer, SizeOf(Buffer);HostEnt := GetHostByName(buffer);if HostEnt = ni
6、l then Exit;addr := HostEnt.h_addr_list;ip := Format(%d.%d.%d.%d, byte(addr 0),byte (addr 1), byte (addr 2), byte (addr 3);LocalIp := Ip;Result := True;finallyWSACleanup;end;end;=功 能: 通过Ip返回机器名参 数:IpAddr: 想要得到名字的Ip返回值: 成功: 机器名 失败: 备 注:inet_addr function converts a string containing an InternetProtoc
7、ol dotted address into an in_addr.版 本:1.0 2002/10/02 22:09:00=function GetNameByIPAddr(IPAddr : String;var MacName:String): Boolean;varSockAddrIn: TSockAddrIn;HostEnt: PHostEnt;WSAData: TWSAData;beginResult := False;if IpAddr = then exit;tryWSAStartup(2, WSAData);SockAddrIn.sin_addr.s_addr := inet_a
8、ddr(PChar(IPAddr);HostEnt := gethostbyaddr(SockAddrIn.sin_addr.S_addr, 4, AF_INET);if HostEnt nil thenMacName := StrPas(Hostent.h_name);Result := True;finallyWSACleanup;end;end;=功 能: 返回网络中SQLServer列表参 数:List: 需要填充的List返回值: 成功: True,并填充List 失败 False备 注:版 本:1.0 2002/10/02 22:44:00=Function GetSQLServe
9、rList(var List: Tstringlist): boolean;vari: integer;sRetValue: String;SQLServer: Variant;ServerList: Variant;beginResult := False;List.Clear;trySQLServer := CreateOleObject(SQLDMO.Application);ServerList := SQLServer.ListAvailableSQLServers;for i := 1 to Serverlist.Count dolist.Add (Serverlist.item(
10、i);Result := True;FinallySQLServer := NULL;ServerList := NULL;end;end;=功 能: 判断Ip协议有没有安装参 数: 无返回值: 成功: True 失败: False;备 注: 该函数还有问题版 本:1.0 2002/10/02 21:05:00=Function IsIPInstalled : boolean;varWSData: TWSAData;ProtoEnt: PProtoEnt;beginResult := True;tryif WSAStartup(2,WSData) = 0 thenbeginProtoEnt :
11、= GetProtoByName(IP);if ProtoEnt = nil thenResult := Falseend;finallyWSACleanup;end;end;=功 能: 返回网络中的共享资源参 数:IpAddr: 机器IpList: 需要填充的List返回值: 成功: True,并填充List 失败: False;备 注:WNetOpenEnum function starts an enumeration of networkresources or existing connections.WNetEnumResource function continues a net
12、work-resourceenumeration started by the WNetOpenEnum function.版 本:1.0 2002/10/03 07:30:00=Function GetUserResource(IpAddr: string; var List: TStringList): Boolean;typeTNetResourceArray = TNetResource;/网络类型的数组Vari: Integer;Buf: Pointer;Temp: TNetResourceArray;lphEnum: THandle;NetResource: TNetResourc
13、e;Count,BufSize,Res: DWord;BeginResult := False;List.Clear;if copy(Ipaddr,0,2) thenIpAddr := +IpAddr; /填充Ip地址信息FillChar(NetResource, SizeOf(NetResource), 0);/初始化网络层次信息NetResource.lpRemoteName := IpAddr1;/指定计算机名称/获取指定计算机的网络资源句柄Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,RESOURCEUSAGE_CO
14、NNECTABLE, NetResource,lphEnum);if Res NO_ERROR then exit;/执行失败while True do/列举指定工作组的网络资源beginCount := $FFFFFFFF;/不限资源数目BufSize := 8192;/缓冲区大小设置为8KGetMem(Buf, BufSize);/申请内存,用于获取工作组信息/获取指定计算机的网络资源名称Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);if Res = ERROR_NO_MORE_ITEMS then break
15、;/资源列举完毕if (Res NO_ERROR) then Exit;/执行失败Temp := TNetResourceArray(Buf);for i := 0 to Count - 1 dobegin/获取指定计算机中的共享资源名称,+2表示删除,/如192.168.0.1 = 192.168.0.1List.Add(Temp.lpRemoteName + 2);Inc(Temp);end;end;Res := WNetCloseEnum(lphEnum);/关闭一次列举if Res NO_ERROR then exit;/执行失败Result := True;FreeMem(Buf);
16、End;=功 能: 返回网络中的工作组参 数:List: 需要填充的List返回值: 成功: True,并填充List 失败: False;备 注:版 本:1.0 2002/10/03 08:00:00=Function GetGroupList( var List : TStringList ) : Boolean;typeTNetResourceArray = TNetResource;/网络类型的数组VarNetResource: TNetResource;Buf: Pointer;Count,BufSize,Res: DWORD;lphEnum: THandle;p: TNetReso
17、urceArray;i,j: SmallInt;NetworkTypeList: TList;BeginResult := False;NetworkTypeList := TList.Create;List.Clear;/获取整个网络中的文件资源的句柄,lphEnum为返回名柄Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER, Nil,lphEnum);if Res NO_ERROR then exit;/Raise Exception(Res);/执行失败/获取整个网络中的网
18、络类型信息Count := $FFFFFFFF;/不限资源数目BufSize := 8192;/缓冲区大小设置为8KGetMem(Buf, BufSize);/申请内存,用于获取工作组信息Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);/资源列举完毕 /执行失败if ( Res = ERROR_NO_MORE_ITEMS ) or (Res NO_ERROR ) then Exit;P := TNetResourceArray(Buf);for i := 0 to Count - 1 do/记录各个网络类型的信息be
19、ginNetworkTypeList.Add(p);Inc(P);end;Res := WNetCloseEnum(lphEnum);/关闭一次列举if Res NO_ERROR then exit;for j := 0 to NetworkTypeList.Count-1 do /列出各个网络类型中的所有工作组名称begin/列出一个网络类型中的所有工作组名称NetResource := TNetResource(NetworkTypeList.ItemsJ);/网络类型信息/获取某个网络类型的文件资源的句柄,NetResource为网络类型信息,lphEnum为返回名柄Res := WNe
20、tOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER, NetResource,lphEnum);if Res NO_ERROR then break;/执行失败while true do/列举一个网络类型的所有工作组的信息beginCount := $FFFFFFFF;/不限资源数目BufSize := 8192;/缓冲区大小设置为8KGetMem(Buf, BufSize);/申请内存,用于获取工作组信息/获取一个网络类型的文件资源信息,Res := WNetEnumResource(lphEnum,
21、 Count, Pointer(Buf), BufSize);/资源列举完毕 /执行失败if ( Res = ERROR_NO_MORE_ITEMS ) or (Res NO_ERROR) then break;P := TNetResourceArray(Buf);for i := 0 to Count - 1 do/列举各个工作组的信息beginList.Add( StrPAS( P.lpRemoteName );/取得一个工作组的名称Inc(P);end;end;Res := WNetCloseEnum(lphEnum);/关闭一次列举if Res NO_ERROR then break
22、;/执行失败end;Result := True;FreeMem(Buf);NetworkTypeList.Destroy;End;=功 能: 列举工作组中所有的计算机参 数:List: 需要填充的List返回值: 成功: True,并填充List 失败: False;备 注:版 本:1.0 2002/10/03 08:00:00=Function GetUsers(GroupName: string; var List: TStringList): Boolean;typeTNetResourceArray = TNetResource;/网络类型的数组Vari: Integer;Buf:
23、Pointer;Temp: TNetResourceArray;lphEnum: THandle;NetResource: TNetResource;Count,BufSize,Res: DWord;beginResult := False;List.Clear;FillChar(NetResource, SizeOf(NetResource), 0);/初始化网络层次信息NetResource.lpRemoteName := GroupName1;/指定工作组名称NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;/类型为服务器(工
24、作组)NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;NetResource.dwScope := RESOURCETYPE_DISK;/列举文件资源信息/获取指定工作组的网络资源句柄Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER, NetResource,lphEnum);if Res NO_ERROR then Exit; /执行失败while True do/列举指定工作组的网络资源beginCount := $FFFFFFF
25、F;/不限资源数目BufSize := 8192;/缓冲区大小设置为8KGetMem(Buf, BufSize);/申请内存,用于获取工作组信息/获取计算机名称Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);if Res = ERROR_NO_MORE_ITEMS then break;/资源列举完毕if (Res NO_ERROR) then Exit;/执行失败Temp := TNetResourceArray(Buf);for i := 0 to Count - 1 do/列举工作组的计算机名称begin/获取工作组的计算机名称,+2表示删除,如wangfajun=wangfajunList.Add(Temp.lpRemoteName + 2);inc(Temp);end;end;Res := WNetCloseEnum(lphEnum);/关闭一次列举if Res NO_ERROR then exit;/执行失败Result := True;FreeMem(Buf);end;=功 能: 列举所有网络类型参 数:List: 需要填充的List返回值: 成功: True,并填充List 失败: False;备 注:版 本:1.0 2002/10/03 08:54:00=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1