怎么遍历局域网上的计算机?

解决方案 »

  1.   

    供参考:
    procedure GetDomainList(TV:TTreeView);
    var
    a : Integer;
    ErrCode : Integer;
    NetRes : Array[0..1023] of TNetResource;
    EnumHandle : THandle;
    EnumEntries : DWord;
    BufferSize : DWord;
    s : string;
    itm : TTreeNode;
    begin
    { Start here }
    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);
    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 with TV do try
    a:=0;
    Items.BeginUpDate;
    Items.Clear;
    Itm:=Items.Add(TV.Selected,string(NetRes[0].lpProvider));
    Itm.ImageIndex:=0;
    Itm.SelectedIndex:=0;