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

Вниз

ПК в сети   Найти похожие ветки 

 
Ламер 2.ХХ   (2007-06-02 02:19) [0]

Подскажите пожалуйста, как определить имена доступных компьютеров, которые отображаются в "Сетевом окружении". Спасибо большое зарание!


 
Savek   (2007-06-02 10:06) [1]

Недавно сам интересовался этим вопросом, нашел кучу нерабочих примеров, но один все таки заработал вот он:

Function GetNetComputers : TStringList;
//Функция возвращает список компьютеров в сети

implementation
Function GetNetComputers : TStringList;
var
frm :Tform;
TreeView: TTreeView;
Noddy : TTreeNode;
procedure EnumSubResources(Items: TTreeNodes; Node: TTreeNode;
 lpNetResource: PNetResource);
const
 MAX_RES = 16;
type
 PResources = ^TResources;
 TResources = array[0..MAX_RES-1] of TNetResource;
var
 hEnum: THandle;
 Count: Cardinal;
 Res: Integer;
 Resources: PResources;
 BufferSize: Cardinal;
 I: Integer;
 NewNode: TTreeNode;
 NewNodeName: String;
begin
 // Открываем доступ к перечню сетевых ресурсов
 Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, lpNetResource, hEnum);
 if NO_ERROR <> Res then
   Exit;
 // Массив, в который читаются сетевые ресурсы
 BufferSize := SizeOf(TResources);
 GetMem(Resources, BufferSize);
 while True do
 begin
   // Загружаем перечень ресурсов в массив
   // Если возникла ошибка, значит, ресурсов больше нет --- покидаем цикл
   Count := MAX_RES;
   Res := WNetEnumResource(hEnum, Count, Resources, BufferSize);
   if (Res <> NO_ERROR) and (Res <> ERROR_MORE_DATA) then
     Break;
   // В противном случае копируем сетевые ресурсы в дерево
   for I := 0 to Count - 1 do
   begin
     // Добавляем дочерний узел
     if Assigned(Resources^[I].lpRemoteName) then
       NewNodeName := String(Resources^[I].lpRemoteName)
     else
       NewNodeName := String(Resources^[I].lpComment);
     NewNode := Items.AddChild(Node, NewNodeName);
     // Вызываем процедуру рекурсивно для заполнения этого узла,
     // если узел содержит подузлы
     if (Resources^[I].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then
       EnumSubResources(Items, NewNode, @(Resources^[I]));
   end;
 end;
 FreeMem(Resources);
 // Закрываем доступ
 WNetCloseEnum(hEnum);
end;
procedure LoadNetResources;
begin
 with TreeView.Items do
 begin
   BeginUpdate;
   Clear;
   Add(nil, "Вся сеть");
   EnumSubResources(TreeView.Items, Item[0], nil);
   EndUpdate;
 end;
end;
begin
Result:=TStringList.Create;
frm:=TForm.Create(nil);
TreeView:=TTreeView.Create(frm);
TreeView.Parent:=frm;
 with TreeView.Items do
 begin
   BeginUpdate;
   Clear;
   Add(nil, "Вся сеть");
   EnumSubResources(TreeView.Items, Item[0], nil);
   EndUpdate;
 end;
Noddy:=TreeView.Items[0];
While Noddy<>nil do begin
  if Noddy.Level=3 then
   Result.Add(Noddy.Text);
  Noddy:=Noddy.GetNext;
end;
FreeAndNil(TreeView);
FreeAndNil(frm);
end;

Не помню где взял, где-то в глубинах нета...



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
15-1180362341
antonn
2007-05-28 18:25
2007.06.24
Потестируйте скриптик, пожалуйста


8-1160027808
DevilDevil
2006-10-05 09:56
2007.06.24
TBitmap и Альфаканал


8-1159345129
NeyroSpace
2006-09-27 12:18
2007.06.24
Direct show: как узнать возможные частоты кадров у веб камеры?


15-1180347760
micke_2007
2007-05-28 14:22
2007.06.24
Вопрос о Shop-Script-Primium


11-1162989060
heilong
2006-11-08 15:31
2007.06.24
layouts like QT в KOL