Форум: "Сети";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизСписок компьютеров сети Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c