Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите. [D5, Win95/98]


Русский ©   (2001-11-20 20:44:00) 

Слушайте мужики, можно ли сканя сетевые ресурсы получить список зашаренных папок, на данном компе, если нельзя, то как зная сеть, домен, и имя компа - узнать список зашаренных папок??


$hade   (2001-11-23 09:36:00) [1]

Вот тебе примерчик :
procedure TMainForm.FormCreate(Sender: TObject);
begin
EnumSubResources(nil);
end;

procedure TMainForm.EnumSubResources(lpNetResource: PNetResource);
const
MAX_RES = 16;
type
PResources = ^TResources;
TResources = array[0..MAX_RES-1] of TNetResource;
var
hEnum: THandle;
Count, BufferSize: DWord;
Res: Integer;
Resources: PResources;
i: Integer;
Name: 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)) and
(Resources^[I].dwDisplayType=2) then
begin
Name:=String(Resources^[I].lpRemoteName);
Name:=Copy(Name,3,Length(Name)-2);
CompBox.Items.Add(Name);
end;
// Вызываем процедуру рекурсивно для заполнения этого узла, если узел
содержит подузлы
if ((Resources^[I].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0) and
(Resources^[I].dwDisplayType<>2) then
EnumSubResources(@(Resources^[I]));
end;
end;
FreeMem(Resources);
// Закрываем доступ
WNetCloseEnum(hEnum);
end;


Иван Шихалев   (2001-11-20 23:48:00) [2]

NetEnumResources, если я не ошибаюсь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо