无意中发现次技巧,枚举网络资源、网上邻居列表、域等信息;不敢独享!procedure EnumResources(LpNR:PNetResource);
type
  PNetResourceArray = ^TNetResourceArray;
  TNetResourceArray = array[0..MaxInt div SizeOf(TNetResource) - 1] of TNetResource;
var
  NetHandle: DWORD;
  BufSize: DWORD;
  Size:DWORD;
  NetResources: PNetResourceArray;
  Count: DWORD;
  NetResult:Integer;
  I: Integer;
  NewItem:TListItem;
begin
  if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,0,LpNR,NetHandle) <> NO_ERROR then Exit;
  try
    BufSize := 50 * SizeOf(TNetResource);
    GetMem(NetResources, BufSize);
    try
      while True do
      begin
        Count := 1;
        Size := BufSize;
        NetResult := WNetEnumResource(NetHandle, Count, NetResources, Size);
        if NetResult = ERROR_MORE_DATA then
        begin
          BufSize := Size;
          ReallocMem(NetResources, BufSize);
          Continue;
        end;
        if NetResult <> NO_ERROR then
           Exit;
        for I := 0 to Count-1 do
        begin
          with NetResources^[I] do
          begin
            if RESOURCEUSAGE_CONTAINER =(DwUsage and RESOURCEUSAGE_CONTAINER) then
                EnumResources(@NetResources^[I]);
            if dwDisplayType = RESOURCEDISPLAYTYPE_SHARE then
// RESOURCEDISPLAYTYPE_SHARE- ресурс
// RESOURCEDISPLAYTYPE_SERVER - компьютер
// RESOURCEDISPLAYTYPE_DOMAIN - рабочая группа
// RESOURCEDISPLAYTYPE_GENERIC - сеть
            begin
              NewItem:= Form1.ListView1.Items.Add;
              NewItem.Caption:=LpRemoteName;
            end;
          end;
        end;
      end;
    finally
      FreeMem(NetResources, BufSize);
    end;
  finally
    WNetCloseEnum(NetHandle);
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
  OldCursor: TCursor;
begin
  OldCursor:= Screen.Cursor;
  Screen.Cursor:= crHourGlass;
  with ListView1.Items do
  begin
    BeginUpdate;
    Clear;
    EnumResources(nil);
    EndUpdate;
  end;
  Screen.Cursor:= OldCursor;
end;

解决方案 »

  1.   

    // RESOURCEDISPLAYTYPE_SHARE- 共享资源
    // RESOURCEDISPLAYTYPE_SERVER - 工作组
    // RESOURCEDISPLAYTYPE_DOMAIN - 域
    // RESOURCEDISPLAYTYPE_GENERIC - 未知如果想运行,必须在LISTVIEW加上一个TlistColnum
      

  2.   

    谢谢谢谢,但是我有一个问题,很多资源看到大家在用,但是我不知道出处都是哪里?最早的资料又是来自哪里呢?基本上delphi书籍很少提到这些应用的。
      

  3.   

    add()
     版主:
       谢谢了!!!!!!!!!!!!!!谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢