打印本文 打印本文 关闭窗口 关闭窗口
在delhpi程序中获取网络资源信息
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1738  更新时间:2009/4/23 18:24:35  文章录入:mintao  责任编辑:mintao
名称

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

  Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,

  RESOURCEUSAGE_CONNECTABLE, @NetResource,lphEnum);

  获取计算机名称的完全程序源代码如下:

  //列举出指定计算机UserName中的共享资源名称,返回值为TRUE表示执行成功,//参数List中返回共享资源名称Function GetUserResource( UserName : string ; var List : TStringList ) : Boolean;Var

  NetResource : TNetResource;

  Buf : Pointer;

  Count,BufSize,Res : DWord;

  Ind : Integer;

  lphEnum : THandle;

  Temp : TNetResourceArray;
Begin

  Result := False;

  List.Clear;

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

  NetResource.lpRemoteName := @UserName[1];//指定计算机名称

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

  Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,

  RESOURCEUSAGE_CONNECTABLE, @NetResource,lphEnum);

  If Res $#@60;$#@62; NO_ERROR Then exit;//执行失败

  While True Do//列举指定工作组的网络资源

  Begin

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

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

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

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

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

  If Res = ERROR_NO_MORE_ITEMS Then break;//资源列举完毕

  If (Res $#@60;$#@62; NO_ERROR) then Exit;//执行失败

   Temp := TNetResourceArray(Buf);

   For Ind := 0 to Count - 1 do

  Begin

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

   //如\\wangfajun=$#@62;wangfajun

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

   Inc(Temp);

  End;

  End;

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

  If Res $#@60;$#@62; NO_ERROR Then exit;//执行失败

  Result := True;

  FreeMem(Buf);
End;

  以上程序在PWIN98+DELPHI3.0下调试通过。

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口