Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
Ламер 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.041 c
2-1180696771
Kolan
2007-06-01 15:19
2007.06.24
Далать что-то, если N раз возникнет исключение, то raise его.


15-1179983146
Riply
2007-05-24 09:05
2007.06.24
Драйвер с именем " " (9 пробелов).


15-1180377430
No_Dead
2007-05-28 22:37
2007.06.24
Если у вас есть время - взгляните..


9-1154357882
Nikss
2006-07-31 18:58
2007.06.24
.Net Framework&amp;Tetris


1-1176996410
sia
2007-04-19 19:26
2007.06.24
как встроить word в свою программу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский