Форум: "Начинающим";
Текущий архив: 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.039 c