我想在我的窗体上浏览整个局域网的用户!请问各位大侠,应该用什么控件呀?或是谁有这方面的源代码给我来一份!谢谢您的帮忙!

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ComCtrls;type
      TfrmMain = class(TForm)
        GroupBox1: TGroupBox;
        TreeView1: TTreeView;
        GroupBox2: TGroupBox;
        btnRun: TButton;
        btnExit: TButton;
        procedure btnRunClick(Sender: TObject);
        procedure btnExitClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
      procedure GetDomainList(Tree:TTreeView);var
      frmMain: TfrmMain;implementation
    {$R *.DFM}
    { Start here }
    procedure TfrmMain.btnRunClick(Sender: TObject);
    begin
      TreeView1.Items.Clear;
      GetDomainList(TreeView1);
    end;procedure TfrmMain.btnExitClick(Sender: TObject);
    begin
      frmMain.Close;
    end;//得到网上邻居主机列表
    procedure GetDomainList(Tree:TTreeView);
    var
       i:Integer;
       ErrCode:Integer;
       NetRes:Array[0..1023] of TNetResource;
       EnumHandle:THandle;
       EnumEntries:DWord;
       BufferSize:DWord;
    begin
     try
      With NetRes[0] do
      begin
       dwScope :=RESOURCE_GLOBALNET;
       dwType :=RESOURCETYPE_ANY;
       dwDisplayType :=RESOURCEDISPLAYTYPE_DOMAIN;
       dwUsage :=RESOURCEUSAGE_CONTAINER;
       lpLocalName :=NIL;
       lpRemoteName :=NIL;
       lpComment :=NIL;
       lpProvider :=NIL;
       end;
    //get net root
       ErrCode:=
        WNetOpenEnum(
         RESOURCE_GLOBALNET,
         RESOURCETYPE_ANY,
         RESOURCEUSAGE_CONTAINER,
         @NetRes[0],
         EnumHandle
          );
    If ErrCode=NO_ERROR then
      begin
        EnumEntries:=1;
        BufferSize:=SizeOf(NetRes);
        ErrCode:=WNetEnumResource(
          EnumHandle,
          EnumEntries,
          @NetRes[0],
          BufferSize
           );
       WNetCloseEnum(EnumHandle);
    If ErrCode=NO_ERROR then
     begin
        ErrCode:=WNetOpenEnum(
          RESOURCE_GLOBALNET,
          RESOURCETYPE_ANY,
          RESOURCEUSAGE_CONTAINER,
          @NetRes[0],
          EnumHandle
           );
        EnumEntries:=1024;
        BufferSize:=SizeOf(NetRes);
        ErrCode:=WNetEnumResource(
         EnumHandle,
         EnumEntries,
         @NetRes[0],
         BufferSize
          );
    IF ErrCode=No_Error then
     for i:=0 to 1024 do
      begin
        if(NetRes[i].lpProvider=nil) then
         begin
          showmessage('网络上共有'+inttostr(i)+'个对象。');
          break;
         end
        else
        with Tree do
         begin
          Items.Add(Tree.Selected,'第'+inttostr(i+1)+'个对象');
          Items.Add(Tree.Selected,'服务提供商:'+string(NetRes[i].lpProvider));
          Items.Add(Tree.Selected,'本机名:'+string(NetRes[i].lpLocalName));
          Items.Add(Tree.Selected,'远程机名或工作组名:'+string(NetRes[i].lpRemoteName));
          Items.Add(Tree.Selected,'评注:'+string(NetRes[i].lpComment));
          Items.Add(Tree.Selected,'-------');
         end;
      end;
     end;
     end;
     except
       showmessage('网络邻居上没有工作组或主机');
     end;
    end;end.