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

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

UNC


Evgeny ©   (2002-10-29 13:27:00) 

вопрос:
Как текущий каталог представить в виде UNC с помощью winapi. То есть есть компьютер \\MY_COMP (локальный),
на нём диск C:, на нём есть каталог TEMP, этот диск отдан в сети (расшарен)
под именем UNCTEMP - как с помощью winapi получить представление этого
диска в виде \\MY_COMP\UNCTEMP\TEMP (что является аналогом C:\TEMP)


Evgeny   (2002-11-02 11:36:00) [1]

В дельфийском хэлпе функция NetShareEnum не описана, сказано только что это устаревшая функция замененная ныне на WNetEnumResource.

> В ТОМ ЧИСЛЕ и ресурсы локальной машины

А спомощью WNetEnumResource мне не удалось получить данные о локальной машине, только замапленные диски (возможно я не со всеми возможными комбинациями параметров поигрался).

> Неудобство - пользоваться семейством функций WNetOpenEnum, WNetEnumResource и WNetCloseEnum достаточно громоздко для такой задачи

В модуле SysUtils - это все уже сделано, есть готовая внутренняя функция, но как я уже сказал, что то у меня с ней не получилось.
Надо попробовать NetShareEnum. Если у тебя есть декларация на эту функцию, то переделать ее для работы в Дельфи не составляет труда. Если размер позволяет опиши здесь в форуме, если нет - вышли по адресу afro@sibovk.omskcity.com


Петров Денис   (2002-10-31 15:12:00) [2]

Нет, Evgeny!
Именно NetShareEnum. Заголовок из MSDN: "The NetShareEnum function retrieves information about each shared resource on a server".
Я пользвовался ей для тех же целей - помогает. Правда, не в Delphi (sorry, но Pascal must die), а в Buildere, потому было легче - подключил хэдер и вперед.
Подробно функция описана в MSDN"е. Если не можешь найти - пиши, вышлю статью из MSDN"а.
Сложность на самом деле может возникнуть только одна - если в Delphi"йских юнитах не описан заголовок NetShareEnum, то придется либо сделать это самому (наподобие заголовков остальных API-функций), либо - написать юнит на C++, скомпилить его в .obj и прилинковать к Delphi"йскому проекту.
Кстати, насчет WNetEnuResource - не совсем верно. Эта функция позволит получить тебе ВСЕ ресурсы в сети, видимые с данного компьютера, В ТОМ ЧИСЛЕ и ресурсы локальной машины (собственно, ей пользуется Explorer, когда открывает сетевое окружение). Неудобство - пользоваться семейством функций WNetOpenEnum, WNetEnumResource и WNetCloseEnum достаточно громоздко для такой задачи, как твоя, ну, и потом придется сравнить полученные имена сетевых ресурсов с именем локальной машины. Если это устраивает - то на здоровье.


Evgeny   (2002-10-30 04:57:00) [3]

Имеешь в виду WNetEnumResource. Пробовал я ее (она описана в SysUtils), но она не помогает для локальной машины. А именно такую машину и требуется опросить (та за которой в данный момент сидишь).


Петров Денис   (2002-10-29 13:57:00) [4]

Стоит воспользоваться NetAPI-функцией NetShareEnum (перечисляет все сетевые ресурсы на заданном сервере) с первым параметром == NULL (для локального компьютера). Подробнее - смотри в MSDN или Win32 SDK Help, который идет с Delphi.


Наверх

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