试一下下面的代码,也许会有帮助
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;

解决方案 »

  1.   

    获得网络邻居所有主机名procedure TForm1.Button1Click(Sender: TObject);
    VAR
        command:string ;
        comline: pchar  ;
    begin
    command:='COMMAND.COM /C net view>c:\~~~.txt';
    comline:=pchar(command);
    WinExec(comline, sw_hide);
    timer1.Enabled:=true;
    end;每秒试一次
    procedure TForm1.Timer1Timer(Sender: TObject);
    var f:tstringlist;
        ll,ii:integer;
        s1,s:string;
        b:bool;
    begin
    f:=tstringlist.Create;
    try
      f.LoadFromFile('c:\~~~.txt');
    except
    end;
    if  f.Count>10 then begin
    memo1.Clear;
    memo1.lines.add(f.text); 
    timer1.Enabled:=false;
    f.Free;
    {去掉多余的行和'\\'}
      for ll:=memo1.lines.count-1 downto 0 do begin
         if strpos(pchar(memo1.lines.strings[ll]),'\\')=nil then
           memo1.lines.delete(ll)
         else
           memo1.lines.Strings[ll]:=delxxx(memo1.lines.Strings[ll]);
            {自编1个去'\\'的函数}
      end;
    timer1.enabled:=False;
    end;
      

  2.   

    用下面的API函数取得邻居中存在的计算机名:
    WNetOpenEnum  WNetEnumResource  WNetCloseEnum