·22·
ComputerEraNo.72004
用
Delphi设计网络监视器实现
计算机监考
胡开明(广东松山职业技术,广东韶关512126)
摘要:本文介绍用Delphi设计网络监视器实现计算机监考的设计思想,文中给出了实现方法和部分原代码.关键词:Delphi;API函数;网络监视器;网络资源;句柄
在计算机机房进行监考,学生可以利用网络相互拷贝,且监考教师难以发现.为有效地防止学生利用网络作弊,可以利用Delphi设计网络监视器,实现计算机监考.1设计思路
在Delphi
程序中,通过API函数可列举出局域网上指定工
RESOURCE_GLOBAL
NET时,dwUsage参数被忽略,这三个参数共同决定要列举的资源范围.LpNetResource是指向结构
NETRESOURCE的指针,如果此参数是一个空指针,函数就从
网络的最高层逐层
搜索符合条件的网络资源,如果参数dwS-cope不是RESOURCE_GLOBALNET,此参数必须为空指针.参数lphEnum用来保存指向此函数返回的一个句柄的指针,保留给WnetEnumResource用来完成整个列举过程.如果函数调
作组中的所有计算机名称,对每一台计算机列举共享资源,可
以达到利用计算机监考的目的.下面以Win98的对等网络为例,列举"网络邻居"中指定
工作组中的用户计算机名称及每
用成功,返回值是NO_ERROR,否则调用GetLastError函数获
取错误代号,作进一步处理.WnetEnumResource函数该函数功能是在WNetOpe-
台计算机的共享资源,设计网络监视器,实现计算机监考.2设计步骤
2.1列举"网络邻居"中的工作组中的所有计算机名称
nEnum的基础上,利用它的返回值,罗列出所有符合条件的Ijc)4络资源,函数原形如下:
DWORDWnetEnumResource(HANDLEhEnum,LPDWORD
IpcCount,LPVOID
在"网络邻居"中,打开"整个网络",再打开本工作组,可
以看到网络中本工作组中所有计算机的名称.在Delphi程序中,可以用API函数WnetOpenEnum和WnetEnumResource来列举"网络邻居"本工作组中所有计算机的名称.MicroSoft提供了以下几个API函数:WnetOpenEnum,WnetEnumResource,WNetCloseEnum及一个网络资源数据结构类型NETRESOURCE,用于搜索局域网上的网络资源.其中NETRESOURCE的定义如下:
typedef
IpBuffer,LPDWORDIpBufferSize);
参数说明:参数hEnum是由WnetOpenEnum返回的句柄;lpcCount是指向一个整数的指针,该整数指明要求返回的资源项数,当此函数成功返回时,该整数值就是实际上返回的项数;
参数lpBuffer是指向一个缓冲区的指针,该缓冲区包含一个
NETRESOURCE类型的数组,也就是所返回的资源数据.Lp-BufferSize指明要存放结果的缓冲区的大小.该函数成功返回分两种情况,如果列举成功,返回值是NO—ERROR,缓冲区中包含着请求的数据,调用函数的程序能继续调用WnetEnum-Resource以完成整个列举过程;如果返回值是ER-ROR—NO—MORE—ITEMS,表明整个列举已经完成,没有其它资
struct—NETRESOURCE{
DWORDdwScope;DWORDdwType;DWORDdwDisplayType;DWORDdwUsage;
LPTSTRLPTSTRLPTSTRLPTSTRIpLocalName;IpRemoteName;IpComment;IpProvider;