نمایش نتایج 1 تا 3 از 3

نام تاپیک: پیدا کردن کلاینت‌های سرور

  1. #1

    پیدا کردن کلاینت‌های سرور

    من دارم یه برنامه مینویسم که قراره روی سرور ران بشه. توی یه قسمتیش باید اسم کامپیوترهای دمین (یا کامپیوترهای موجود توی شبکه) رو بدونم. اگه کسی می‌تونه مرو راهنمایی کنه.

  2. #2

    type
    PNetResourceArray = ^TNetResourceArray;
    TNetResourceArray = array[0..100] of TNetResource;

    function CreateNetResourceList(ResourceType: DWord;
    NetResource: PNetResource;
    out Entries: DWord;
    out List: PNetResourceArray): Boolean;
    var
    EnumHandle: THandle;
    BufSize: DWord;
    Res: DWord;
    begin
    Result := False;
    List := Nil;
    Entries := 0;
    if WNetOpenEnum(RESOURCE_GLOBALNET,
    ResourceType,
    0,
    NetResource,
    EnumHandle) = NO_ERROR then begin
    try
    BufSize := $4000; // 16 kByte
    GetMem(List, BufSize);
    try
    repeat
    Entries := DWord(-1);
    FillChar(List^, BufSize, 0);
    Res := WNetEnumResource(EnumHandle, Entries, List, BufSize);
    if Res = ERROR_MORE_DATA then
    begin
    ReAllocMem(List, BufSize);
    end;
    until Res <> ERROR_MORE_DATA;

    Result := Res = NO_ERROR;
    if not Result then
    begin
    FreeMem(List);
    List := Nil;
    Entries := 0;
    end;
    except
    FreeMem(List);
    raise;
    end;
    finally
    WNetCloseEnum(EnumHandle);
    end;
    end;
    end;

    procedure ScanNetworkResources(ResourceType, DisplayType: DWord; List: TStrings);

    procedure ScanLevel(NetResource: PNetResource);
    var
    Entries: DWord;
    NetResourceList: PNetResourceArray;
    i: Integer;
    begin
    if CreateNetResourceList(ResourceType, NetResource, Entries, NetResourceList) then try
    for i := 0 to Integer(Entries) - 1 do
    begin
    if (DisplayType = RESOURCEDISPLAYTYPE_GENERIC) or
    (NetResourceList[i].dwDisplayType = DisplayType) then begin
    List.AddObject(NetResourceList[i].lpRemoteName,
    Pointer(NetResourceList[i].dwDisplayType));
    end;
    if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then
    ScanLevel(@NetResourceList[i]);
    end;
    finally
    FreeMem(NetResourceList);
    end;
    end;

    begin
    ScanLevel(Nil);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, ListBox1.Items);
    end;

  3. #3
    خیلی ممنون ولی این کد کامپیوترهایی که توی یه شبکه هستند رو اسکن میکنه و میگه. من یه کد میخوام که فقط کامپیوترهای کلاینت سرور رو بهم بگه اعم از اینکه الان خاموش باشند یا روشن. اگه میشه کمکم کنید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •