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

Вниз

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

 
Сетевик   (2004-04-07 11:07) [0]

Господа, ну подскажите уже код на Delphi, каким образом можно получить список компьютеров в сети.
Чтобы работало под Win98\ME и выше.

Заранее спасибо.


 
Evgeny V ©   (2004-04-07 11:58) [1]

http://sources.ru/delphi/internet/find_all_computers_on_network.shtml


 
Сетевик   (2004-04-07 13:03) [2]

эээхх...
все хорошо.
Но эта функция работает хорошо только для Win98\ME.

Для 2000 она возвращает список рабочих групп. Печально.


 
Srg   (2004-04-07 13:13) [3]

Ответ в этом же форуме, я пробовал - работает.

Posted by <Rouse_ ©   (09.02.04 19:42) [4]

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.


 
Vit@ly ©   (2004-04-07 13:16) [4]

http://www.delphimaster.ru/articles/netmon/index.html



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
1-1083662053
Алламит
2004-05-04 13:14
2004.05.23
Изменение параметров диаграммы в XL


1-1084204215
dnsokol
2004-05-10 19:50
2004.05.23
Менюшка элементов aka Outlook


3-1083141967
GIL
2004-04-28 12:46
2004.05.23
Обозначение пустоты в поле в SQL-запросе


1-1084287680
Eugene30
2004-05-11 19:01
2004.05.23
Как программно (в run-time) получить список всех форм проекта?


14-1083328106
uny
2004-04-30 16:28
2004.05.23
тема такая странная