网络小工具 ShareView[9]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 lyris 的 blog

  res := wnetopenenum(resource_globalnet, resourcetype_disk,
    resourceusage_container, nil, lphenum);
  if res <> no_error then
    exit; //执行失败
  //获取整个网络中的网络类型信息
  count := $ffffffff;                //不限资源数目
  bufsize := 8192;                   //缓冲区大小设置为8k
  getmem(buf1, bufsize);              //申请内存,用于获取工作组信息
  list := tlist.create;
  try
    res := wnetenumresource(lphenum, count, pointer(buf1), bufsize);
    if (res = error_no_more_items) or (res <> no_error) then
      exit;                          //资源列举完毕 或者 执行失败
    p := buf1;
    for i := 0 to count - 1 do
    begin
      list.add(p);
      inc(p);
    end;
    res := wnetcloseenum(lphenum); //关闭一次列举
    if res <> no_error then exit;
    for i := 0 to list.count -1 do
    begin
      netresource := tnetresource(list.items[i]^);
      res := wnetopenenum(resource_globalnet, resourcetype_disk,
        resourceusage_container, @netresource, lphenum);
      if res <> no_error then break; //执行失败
      names.clear;
      while true do
      begin
        count := $ffffffff; //不限资源数目
        getmem(buf2, bufsize); //申请内存,用于获取工作组信息
        try
          res := wnetenumresource(lphenum, count, pointer(buf2), bufsize); //获取一个网络类型的文件资源信息
          if (res = error_no_more_items) or (res <> no_error) then
            break;                          //资源列举完毕 或者 执行失败
          p := buf2;
          for j := 0 to count - 1 do //列举各个工作组的信息
          begin
            names.add(p^.lpremotename);
            inc(p);
          end;
        finally
          freemem(buf2, bufsize);
        end;
      end;
    end;
  finally
    freemem(buf1, bufsize);
    list.free;
  end;
end;

procedure getcomputernamelist(groupname: string;names: tstrings);
var
  netresource: tnetresource;
  p: ^tnetresource;
  lphenum: thandle;
  buf1: pointer;
  count, bufsize, res: dword;
  i: integer;
begin
  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);
  if res <> no_error then exit; //执行失败
  names.clear;
  while true do //列举指定工作组的网络资源
  begin
    count := $ffffffff; //不限资源数目
    bufsize := 8192; //缓冲区大小设置为8k
    getmem(buf1, bufsize); //申请内存,用于获取工作组信息
    try
      res := wnetenumresource(lphenum, count, pointer(buf1), bufsize);
      if res = error_no_more_items then break; //资源列举完毕
      if (res <> no_error) then exit; //执行失败
      p := buf1;

本文关键:网络小工具 ShareView
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top