DELPHI7网络函数大全.docx

上传人:b****7 文档编号:9529413 上传时间:2023-02-05 格式:DOCX 页数:24 大小:19.48KB
下载 相关 举报
DELPHI7网络函数大全.docx_第1页
第1页 / 共24页
DELPHI7网络函数大全.docx_第2页
第2页 / 共24页
DELPHI7网络函数大全.docx_第3页
第3页 / 共24页
DELPHI7网络函数大全.docx_第4页
第4页 / 共24页
DELPHI7网络函数大全.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

DELPHI7网络函数大全.docx

《DELPHI7网络函数大全.docx》由会员分享,可在线阅读,更多相关《DELPHI7网络函数大全.docx(24页珍藏版)》请在冰豆网上搜索。

DELPHI7网络函数大全.docx

DELPHI7网络函数大全

网络函数大全

{=========================================================================

功能:

网络函数库

时间:

2002/10/02

版本:

1.0

=========================================================================}

unitNet;

interface

uses

SysUtils

Windows

dialogs

winsock

Classes

ComObj

WinInet;

//得到本机的局域网Ip地址

FunctionGetLocalIp(varLocalIp:

string):

Boolean;

//通过Ip返回机器名

FunctionGetNameByIPAddr(IPAddr:

string;varMacName:

string):

Boolean;

//获取网络中SQLServer列表

FunctionGetSQLServerList(varList:

Tstringlist):

Boolean;

//获取网络中的所有网络类型

FunctionGetNetList(varList:

Tstringlist):

Boolean;

//获取网络中的工作组

FunctionGetGroupList(varList:

TStringList):

Boolean;

//获取工作组中所有计算机

FunctionGetUsers(GroupName:

string;varList:

TStringList):

Boolean;

//获取网络中的资源

FunctionGetUserResource(IpAddr:

string;varList:

TStringList):

Boolean;

//映射网络驱动器

FunctionNetAddConnection(NetPath:

Pchar;PassWord:

Pchar;LocalPath:

Pchar):

Boolean;

//检测网络状态

FunctionCheckNet(IpAddr:

string):

Boolean;

//检测机器是否登入网络

FunctionCheckMacAttachNet:

Boolean;

//判断Ip协议有没有安装这个函数有问题

FunctionIsIPInstalled:

boolean;

//检测机器是否上网

FunctionInternetConnected:

Boolean;

implementation

{=================================================================

功能:

检测机器是否登入网络

参数:

返回值:

成功:

True失败:

False

备注:

版本:

1.02002/10/0309:

55:

00

=================================================================}

FunctionCheckMacAttachNet:

Boolean;

begin

Result:

=False;

ifGetSystemMetrics(SM_NETWORK)<>0then

Result:

=True;

end;

{=================================================================

功能:

返回本机的局域网Ip地址

参数:

返回值:

成功:

True,并填充LocalIp失败:

False

备注:

版本:

1.02002/10/0221:

05:

00

=================================================================}

functionGetLocalIP(varLocalIp:

string):

Boolean;

var

HostEnt:

PHostEnt;

Ip:

string;

addr:

pchar;

Buffer:

array[0..63]ofchar;

GInitData:

TWSADATA;

begin

Result:

=False;

try

WSAStartup(2,GInitData);

GetHostName(Buffer,SizeOf(Buffer));

HostEnt:

=GetHostByName(buffer);

ifHostEnt=nilthenExit;

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;

finally

WSACleanup;

end;

end;

{=================================================================

功能:

通过Ip返回机器名

参数:

IpAddr:

想要得到名字的Ip

返回值:

成功:

机器名失败:

''

备注:

inet_addrfunctionconvertsastringcontaininganInternet

Protocoldottedaddressintoanin_addr.

版本:

1.02002/10/0222:

09:

00

=================================================================}

functionGetNameByIPAddr(IPAddr:

String;varMacName:

String):

Boolean;

var

SockAddrIn:

TSockAddrIn;

HostEnt:

PHostEnt;

WSAData:

TWSAData;

begin

Result:

=False;

ifIpAddr=''thenexit;

try

WSAStartup(2,WSAData);

SockAddrIn.sin_addr.s_addr:

=inet_addr(PChar(IPAddr));

HostEnt:

=gethostbyaddr(@SockAddrIn.sin_addr.S_addr,4,AF_INET);

ifHostEnt<>nilthen

MacName:

=StrPas(Hostent^.h_name);

Result:

=True;

finally

WSACleanup;

end;

end;

{=================================================================

功能:

返回网络中SQLServer列表

参数:

List:

需要填充的List

返回值:

成功:

True,并填充List失败False

备注:

版本:

1.02002/10/0222:

44:

00

=================================================================}

FunctionGetSQLServerList(varList:

Tstringlist):

boolean;

var

i:

integer;

sRetValue:

String;

SQLServer:

Variant;

ServerList:

Variant;

begin

Result:

=False;

List.Clear;

try

SQLServer:

=CreateOleObject('SQLDMO.Application');

ServerList:

=SQLServer.ListAvailableSQLServers;

fori:

=1toServerlist.Countdo

list.Add(Serverlist.item(i));

Result:

=True;

Finally

SQLServer:

=NULL;

ServerList:

=NULL;

end;

end;

{=================================================================

功能:

判断Ip协议有没有安装

参数:

返回值:

成功:

True失败:

False;

备注:

该函数还有问题

版本:

1.02002/10/0221:

05:

00

=================================================================}

FunctionIsIPInstalled:

boolean;

var

WSData:

TWSAData;

ProtoEnt:

PProtoEnt;

begin

Result:

=True;

try

ifWSAStartup(2,WSData)=0then

begin

ProtoEnt:

=GetProtoByName('IP');

ifProtoEnt=nilthen

Result:

=False

end;

finally

WSACleanup;

end;

end;

{=================================================================

功能:

返回网络中的共享资源

参数:

IpAddr:

机器Ip

List:

需要填充的List

返回值:

成功:

True,并填充List失败:

False;

备注:

WNetOpenEnumfunctionstartsanenumerationofnetwork

resourcesorexistingconnections.

WNetEnumResourcefunctioncontinuesanetwork-resource

enumerationstartedbytheWNetOpenEnumfunction.

版本:

1.02002/10/0307:

30:

00

=================================================================}

FunctionGetUserResource(IpAddr:

string;varList:

TStringList):

Boolean;

type

TNetResourceArray=^TNetResource;//网络类型的数组

Var

i:

Integer;

Buf:

Pointer;

Temp:

TNetResourceArray;

lphEnum:

THandle;

NetResource:

TNetResource;

Count,BufSize,Res:

DWord;

Begin

Result:

=False;

List.Clear;

ifcopy(Ipaddr,0,2)<>'\\'then

IpAddr:

='\\'+IpAddr;//填充Ip地址信息

FillChar(NetResource,SizeOf(NetResource),0);//初始化网络层次信息

NetResource.lpRemoteName:

=@IpAddr[1];//指定计算机名称

//获取指定计算机的网络资源句柄

Res:

=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,

RESOURCEUSAGE_CONNECTABLE,@NetResource,lphEnum);

ifRes<>NO_ERRORthenexit;//执行失败

whileTruedo//列举指定工作组的网络资源

begin

Count:

=$FFFFFFFF;//不限资源数目

BufSize:

=8192;//缓冲区大小设置为8K

GetMem(Buf,BufSize);//申请内存,用于获取工作组信息

//获取指定计算机的网络资源名称

Res:

=WNetEnumResource(lphEnum,Count,Pointer(Buf),BufSize);

ifRes=ERROR_NO_MORE_ITEMSthenbreak;//资源列举完毕

if(Res<>NO_ERROR)thenExit;//执行失败

Temp:

=TNetResourceArray(Buf);

fori:

=0toCount-1do

begin

//获取指定计算机中的共享资源名称,+2表示删除"\\",

//如\\192.168.0.1=>192.168.0.1

List.Add(Temp^.lpRemoteName+2);

Inc(Temp);

end;

end;

Res:

=WNetCloseEnum(lphEnum);//关闭一次列举

ifRes<>NO_ERRORthenexit;//执行失败

Result:

=True;

FreeMem(Buf);

End;

{=================================================================

功能:

返回网络中的工作组

参数:

List:

需要填充的List

返回值:

成功:

True,并填充List失败:

False;

备注:

版本:

1.02002/10/0308:

00:

00

=================================================================}

FunctionGetGroupList(varList:

TStringList):

Boolean;

type

TNetResourceArray=^TNetResource;//网络类型的数组

Var

NetResource:

TNetResource;

Buf:

Pointer;

Count,BufSize,Res:

DWORD;

lphEnum:

THandle;

p:

TNetResourceArray;

i,j:

SmallInt;

NetworkTypeList:

TList;

Begin

Result:

=False;

NetworkTypeList:

=TList.Create;

List.Clear;

//获取整个网络中的文件资源的句柄,lphEnum为返回名柄

Res:

=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,

RESOURCEUSAGE_CONTAINER,Nil,lphEnum);

ifRes<>NO_ERRORthenexit;//RaiseException(Res);//执行失败

//获取整个网络中的网络类型信息

Count:

=$FFFFFFFF;//不限资源数目

BufSize:

=8192;//缓冲区大小设置为8K

GetMem(Buf,BufSize);//申请内存,用于获取工作组信息

Res:

=WNetEnumResource(lphEnum,Count,Pointer(Buf),BufSize);

//资源列举完毕//执行失败

if(Res=ERROR_NO_MORE_ITEMS)or(Res<>NO_ERROR)thenExit;

P:

=TNetResourceArray(Buf);

fori:

=0toCount-1do//记录各个网络类型的信息

begin

NetworkTypeList.Add(p);

Inc(P);

end;

Res:

=WNetCloseEnum(lphEnum);//关闭一次列举

ifRes<>NO_ERRORthenexit;

forj:

=0toNetworkTypeList.Count-1do//列出各个网络类型中的所有工作组名称

begin//列出一个网络类型中的所有工作组名称

NetResource:

=TNetResource(NetworkTypeList.Items[J]^);//网络类型信息

//获取某个网络类型的文件资源的句柄,NetResource为网络类型信息,lphEnum为返回名柄

Res:

=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,

RESOURCEUSAGE_CONTAINER,@NetResource,lphEnum);

ifRes<>NO_ERRORthenbreak;//执行失败

whiletruedo//列举一个网络类型的所有工作组的信息

begin

Count:

=$FFFFFFFF;//不限资源数目

BufSize:

=8192;//缓冲区大小设置为8K

GetMem(Buf,BufSize);//申请内存,用于获取工作组信息

//获取一个网络类型的文件资源信息,

Res:

=WNetEnumResource(lphEnum,Count,Pointer(Buf),BufSize);

//资源列举完毕//执行失败

if(Res=ERROR_NO_MORE_ITEMS)or(Res<>NO_ERROR)thenbreak;

P:

=TNetResourceArray(Buf);

fori:

=0toCount-1do//列举各个工作组的信息

begin

List.Add(StrPAS(P^.lpRemoteName));//取得一个工作组的名称

Inc(P);

end;

end;

Res:

=WNetCloseEnum(lphEnum);//关闭一次列举

ifRes<>NO_ERRORthenbreak;//执行失败

end;

Result:

=True;

FreeMem(Buf);

NetworkTypeList.Destroy;

End;

{=================================================================

功能:

列举工作组中所有的计算机

参数:

List:

需要填充的List

返回值:

成功:

True,并填充List失败:

False;

备注:

版本:

1.02002/10/0308:

00:

00

=================================================================}

FunctionGetUsers(GroupName:

string;varList:

TStringList):

Boolean;

type

TNetResourceArray=^TNetResource;//网络类型的数组

Var

i:

Integer;

Buf:

Pointer;

Temp:

TNetResourceArray;

lphEnum:

THandle;

NetResource:

TNetResource;

Count,BufSize,Res:

DWord;

begin

Result:

=False;

List.Clear;

FillChar(NetResource,SizeOf(NetResource),0);//初始化网络层次信息

NetResource.lpRemoteName:

=@GroupName[1];//指定工作组名称

NetResource.dwDisplayType:

=RESOURCEDISPLAYTYPE_SERVER;//类型为服务器(工作组)

NetResource.dwUsage:

=RESOURCEUSAGE_CONTAINER;

NetResource.dwScope:

=RESOURCETYPE_DISK;//列举文件资源信息

//获取指定工作组的网络资源句柄

Res:

=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,

RESOURCEUSAGE_CONTAINER,@NetResource,lphEnum);

ifRes<>NO_ERRORthenExit;//执行失败

whileTruedo//列举指定工作组的网络资源

begin

Count:

=$FFFFFFFF;//不限资源数目

BufSize:

=8192;//缓冲区大小设置为8K

GetMem(Buf,BufSize);//申请内存,用于获取工作组信息

//获取计算机名称

Res:

=WNetEnumResource(lphEnum,Count,Pointer(Buf),BufSize);

ifRes=ERROR_NO_MORE_ITEMSthenbreak;//资源列举完毕

if(Res<>NO_ERROR)thenExit;//执行失败

Temp:

=TNetResourceArray(Buf);

fori:

=0toCount-1do//列举工作组的计算机名称

begin

//获取工作组的计算机名称,+2表示删除"\\",如\\wangfajun=>wangfajun

List.Add(Temp^.lpRemoteName+2);

inc(Temp);

end;

end;

Res:

=WNetCloseEnum(lphEnum);//关闭一次列举

ifRes<>NO_ERRORthenexit;//执行失败

Result:

=True;

FreeMem(Buf);

end;

{=================================================================

功能:

列举所有网络类型

参数:

List:

需要填充的List

返回值:

成功:

True,并填充List失败:

False;

备注:

版本:

1.02002/10/0308:

54:

00

==============================================

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1