delphi如何获取局域网的机器名与对应的IP地址?
用树型方式列出来,网上资料太乱,希望哪位大哥指点。。

解决方案 »

  1.   

    其实最简单的就是ping 电脑名称 就出 IP.
      

  2.   

    你可以根据网段循环Ping,判断路由返回状态。
      

  3.   

    我想直接调用window 网上邻居 的资源管理器?
      

  4.   


    procedure TForm1.getdomainlist(const group: string; ts: tstrings);
    var
      groupr:Tnetresource;
      nethand:Thandle;
      buffsize,count:Dword;
      buffer:pointer;
      i:     integer;
      rb:    TnetresourceArray;
      bs:     string;
    begin
      fillchar(groupr,sizeof(Tnetresource),0);
      groupr.dwScope:=RESOURCE_GLOBALNET;
      groupr.dwType:=RESOURCETYPE_DISK;
      groupr.lpRemoteName:=pchar(group);
      groupr.dwDisplayType:=RESOURCEDISPLAYTYPE_SERVER;
      groupr.dwUsage:=RESOURCEUSAGE_CONNECTABLE;
      if wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,0,@groupr,nethand)<>NO_ERROR THEN
      begin
        showmessage('no net!');
        exit;
      end;
      buffsize:=sizeof(tnetresource)*1024;
      count:=$ffffffff;
      getmem(buffer,buffsize);
      if wnetenumresource(nethand,count,buffer,buffsize)=NO_ERROR then
      begin
        rb:=tnetresourcearray(buffer);
        for i:=0 to count-1 do
        begin
          bs:=copy(rb^.lpRemoteName,0,strlen(rb^.lpRemoteName));
          ts.Add(bs);
          inc(rb);
        end;
      end;
      wnetcloseenum(nethand);
      dispose(buffer);
    end;
      

  5.   

     ts.Add(bs);
    老于:我运行到这里就出现Abstract Error错误。
    我是这样调用的:
    var ts: tstrings;
    begin
     ts:= tstrings.Create;
     getdomainlist('workgroup',ts);
    end;
      

  6.   

    var ts: tstringlist; 
    begin 
    ts:= tstringlist.Create; 
    getdomainlist('workgroup',ts); 
    end;
      

  7.   

    net view显示出机器名 再ping 得IP
      

  8.   

    D7中的 ShellTreeView1
    uses socket
    GetHostByName