Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

Список компьютеров сети   Найти похожие ветки 

 
Said ©   (2004-05-26 13:53) [0]

Уважаемые МД, подскажите как определить, что доступный сетевой ресурс в иерархии сети яв-ся именно рабочей станцией, а не скажем доменом  n-го уровня.


 
Rouse_ ©   (2004-05-26 21:56) [1]

WNetEnumResource имеет OUT параметр lpBuffer, который в свою очередь представляет собой структуру NETRESOURCE, которая в свою очередь имеет dwDisplayType, который в свою очередь может принимать следующие значения:
RESOURCEDISPLAYTYPE_DOMAIN The object should be displayed as a domain.
RESOURCEDISPLAYTYPE_SERVER The object should be displayed as a server.
RESOURCEDISPLAYTYPE_SHARE The object should be displayed as a share.
RESOURCEDISPLAYTYPE_GENERIC The method used to display the object does not matter.


тебя интересует RESOURCEDISPLAYTYPE_SERVER


 
Rouse_ ©   (2004-05-26 22:00) [2]

Вот тебе пример как разруливается все сие действо:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, Winsock;

type
 TForm1 = class(TForm)
   Button1: TButton;
   TreeView1: TTreeView;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   procedure Scan(Res: TNetResource; Root: boolean);
 end;

var
 Form1: TForm1;
 TreeDomain: TTreeNode;
 TreeServer: TTreeNode;

implementation

{$R *.dfm}

function GetIPAddress(NetworkName: String): String;
var
Error: DWORD;
HostEntry: PHostEnt;
Data: WSAData;
Address: In_Addr;
begin
 Delete(NetworkName, 1, 2);
 Error:=WSAStartup(MakeWord(1, 1), Data);
 if Error = 0 then
 begin
   HostEntry:=gethostbyname(PChar(NetworkName));
   Error:=GetLastError();
   if Error = 0 then
   begin
     Address:=PInAddr(HostEntry^.h_addr_list^)^;
     Result:=inet_ntoa(Address);
   end
   else
    Result:="Unknown";
 end
 else
   Result:="Error";
 WSACleanup();
end;

procedure TForm1.Scan(Res: TNetResource; Root: boolean);
var
hEnum: cardinal;
nrResource: array[0..512] of TNetResource;
dwSize: DWORD;
numEntries: DWORD;
I: DWORD;
dwResult: DWORD;
begin
 if Root then
   dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
     0, nil, hEnum)
 else
   dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
     0, @Res, hEnum);
 if dwResult = NO_ERROR then
 begin
   dwSize := SizeOf(nrResource);
   numEntries := DWORD(-1);
   if WNetEnumResource(hEnum, numEntries, @nrResource, dwSize) = NO_ERROR then
   begin
     for i := 0 to numEntries - 1 do
     begin
       Application.ProcessMessages;
       if Assigned(nrResource[i].lpRemoteName) then
         if nrResource[i].dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN then
           TreeDomain := TreeView1.Items.Add(nil, nrResource[i].lpRemoteName)
         else
           if nrResource[i].dwDisplayType = RESOURCEDISPLAYTYPE_SERVER then
             TreeServer := TreeView1.Items.AddChild(TreeDomain, nrResource[i].lpRemoteName + " IP: " + GetIPAddress(nrResource[i].lpRemoteName))
           else
             TreeView1.Items.AddChild(TreeServer, nrResource[i].lpRemoteName);
       Scan(nrResource[i], false);
     end;
   WNetCloseEnum(hEnum);
   end;
 end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
 R:TNetResource;
begin
 Scan(R, True);
end;

end.


---
Желаю успехов


 
Said ©   (2004-05-27 16:51) [3]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
8-1084130960
Aldor
2004-05-09 23:29
2004.07.25
Как MCI рисует на DC?


1-1089297274
lion
2004-07-08 18:34
2004.07.25
параметры файла


1-1089709068
Ross
2004-07-13 12:57
2004.07.25
Форма загружена?


4-1087154940
DjOne
2004-06-13 23:29
2004.07.25
Tabs


1-1089645134
ADMIN
2004-07-12 19:12
2004.07.25
system error. code 1447.