请问各位大虾:
   我想判断局域网内是否存在名为computer1的计算机 怎么做!?

解决方案 »

  1.   

    ◇[DELPHI]获取网上邻居
    procedure getnethood();//NT做服务器,WIN98上调试通过。
    var
    a,i:integer;
    errcode:integer;
    netres:array[0..1023] of netresource;
    enumhandle:thandle;
    enumentries:dword;
    buffersize:dword;
    s:string;
    mylistitems:tlistitems;
    mylistitem:tlistitem;
    alldomain:tstrings;
    begin //listcomputer is a listview to list all computers;controlcenter is a form.
    alldomain:=tstringlist.Create ;
    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; // 获取所有的域
    errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
    if errcode=NO_ERROR then begin
    enumentries:=1024;
    buffersize:=sizeof(netres);
    errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
    end;
    a:=0;
    mylistitems :=controlcenter.lstcomputer.Items ;
    mylistitems.Clear ;
    while (string(netres[a].lpprovider)<>'') and (errcode=NO_ERROR) do
    begin
    alldomain.Add (netres[a].lpremotename);
    a:=a+1;
    end;
    wnetcloseenum(enumhandle);
    // 获取所有的计算机
    mylistitems :=controlcenter.lstcomputer.Items ;
    mylistitems.Clear ;
    for i:=0 to alldomain.Count-1 do
    begin
    with netres[0] do begin
    dwscope :=RESOURCE_GLOBALNET;
    dwtype :=RESOURCETYPE_ANY;
    dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
    dwusage :=RESOURCEUSAGE_CONTAINER;
    lplocalname :=nil;
    lpremotename :=pchar(alldomain[i]);
    lpcomment :=nil;
    lpprovider :=nil;
    end;
    ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
    if errcode=NO_ERROR then
    begin
    EnumEntries:=1024;
    BufferSize:=SizeOf(NetRes);
    ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
    end;
    a:=0;
    while (string(netres[a].lpprovider)<>'') and (errcode=NO_ERROR) do
    begin
    mylistitem :=mylistitems.Add ;
    mylistitem.ImageIndex :=0;
    mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'\\','',[rfReplaceAll]));
    a:=a+1;
    end;
    wnetcloseenum(enumhandle);
    end;
    end;