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

Вниз

Найти компь.теры в сети. Отобразить в виде дерева.   Найти похожие ветки 

 
Deff   (2004-04-20 21:17) [0]

Код из фака не подходит. Может, компоненты?
Заранее благодарен.


 
Rouse_ ©   (2004-04-20 21:30) [1]

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.


 
Deff   (2004-04-21 00:03) [2]

аплодирую стоя.
то что нужно с первого раза.
Руз, Вы читаете мысли?


 
Rouse_ ©   (2004-04-21 00:09) [3]

Я часто тренируюсь :)


 
VideoLord ©   (2004-04-21 03:21) [4]

Он часто пишет этот код ;-)



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
1-1085166464
leonidus
2004-05-21 23:07
2004.06.06
Очень надо сделать меню с двигающимися панелями инструментов


1-1085071270
tamroF
2004-05-20 20:41
2004.06.06
импортировал ActiveX... (TShockwaveFlash)


3-1084860486
very beginer
2004-05-18 10:08
2004.06.06
Про MasterSource в Table


14-1084954521
Mystic
2004-05-19 12:15
2004.06.06
Шахматная партия с компьютером


4-1082703033
Александр_33
2004-04-23 10:50
2004.06.06
Текст в окне DOS-приложения