Подключение сетевого диска

Если возникла необходимость, чтобы Ваше приложение самостоятельно подключало сетевой ресурс, то это можно сделать двумя способами: вызвать стандартный диалог подключения ресурса либо использоваться следующий код.
// Пример открытия стандартного диалога
procedure TForm1.Button1Click(Sender: TObject);
begin
 WNetConnectionDialog(Handle, RESOURCETYPE_DISK);
end;
// Так же можно подключить и принтер
procedure TForm1.Button1Click(Sender: TObject);
begin
 WNetConnectionDialog(Handle, RESOURCETYPE_PRINT);
end;
// либо можно использовать следующий код
procedure TForm1.Button2Click(Sender: TObject);
var
 NetResource: TNetResource;
begin
 { заполняем структуру TNetResource }
 NetResource.dwType := RESOURCETYPE_DISK;
 NetResource.lpLocalName := 'S:';
 NetResource.lpRemoteName := '\\myserver\public';
 NetResource.lpProvider := ;
 { подключаем сетевой ресурс, используя структуру TNetResource }
 if ( WNetAddConnection2(NetResource,
 , {Password (if needed) or empty}
 , {User name (if needed) or empty}
 CONNECT_UPDATE_PROFILE) <> NO_ERROR) then
 raise Excepcion.Create('unable to map drive');
 // так же существуют другие константы для определения возникшей ошибки
 // ERROR_ACCESS_DENIED, ERROR_ALREADY_ASSIGNED, и т.д.
end;
// так же можно и отключить сетевой ресурс...
procedure TForm1.Button2Click(Sender: TObject);
begin
 if WNetCancelConnection2('S:', 0, TRUE) <> NO_ERROR then
 raise Exception.Create('Error disconnecting map drive');
 // соответственно можно использовать другие константы для определения ошибки
 // ERROR_DEVICE_IN_USE, ERROR_NOT_CONNECTED, и т.д.
end;
Author: Eber Irigoyen
Source: Взято из http://forum.sources.ru
ID: 03301
----
Подключение и отключение сетевых дисководов
Для работы с сетевыми дисководами (и ресурсами типа LPT порта) в WIN API 16 и WIN API 32 следующие функции:
== 1. Подключить сетевой ресурс ==
function WNetAddConnection(NetResourse, Password, LocalName: PChar): longint;
* NetResourse - имя сетевого ресурса (например '\\P166\c')
* Password - пароль на доступ к ресурсу (если нет пароля, то пустая строка)
* LocalName - имя, под которым сетевой ресурс будет отображен на данном компьютере (например 'F:')
Пример подключения сетевого диска
WNetAddConnection('\\P166\C', , 'F:');
Функция возвращает код ошибки. Для всех кодов предопределены константы, наиболее часто используемые :
* NO_ERROR - Нет ошибок - успешное завершение
* ERROR_ACCESS_DENIED - Ошибка доступа
* ERROR_ALREADY_ASSIGNED - Уже подключен. Наиболее часто возникает при повторном вызове данной функции с теми-же параметрами.
* ERROR_BAD_DEV_TYPE - Неверный тип устройства.
* ERROR_BAD_DEVICE - Неверное устройство указано в LocalName
* ERROR_BAD_NET_NAME - Неверный сетевой путь или сетевое имя
* ERROR_EXTENDED_ERROR - Некоторая ошибка сети (см. функцию WNetGetLastError для подробностей)
* ERROR_INVALID_PASSWORD - Неверный пароль
* ERROR_NO_NETWORK - Нет сети
== 2. Отключить сетевой ресурс ==
function WNetCancelConnection(LocalName: PChar; ForceMode: Boolean): Longint;
* LocalName - имя, под которым сетевой ресурс был подключен к данному компьютеру (например 'F:')
* ForceMode - режим отключения:
** False - корректное отключение. Если отключаемый ресурс еще используется, то отключения не произойдет (например, на сетевом диске открыт файл)
** True - скоростное некорректное отключение. Если ресурс используется, отключение все равно произойдет и может привести к любым последствиям (от отсутствия ошибок до глухого повисания)
Функция возвращает код ошибки. Для всех кодов предопределены константы, наиболее часто используемые:
* NO_ERROR - Нет ошибок - успешное завершение
* ERROR_DEVICE_IN_USE - Ресурс используется
* ERROR_EXTENDED_ERROR - Некоторая ошибка сети (см. функцию WNetGetLastError для подробностей)
* ERROR_NOT_CONNECTED - Указанное ус-во не является сетевым
* ERROR_OPEN_FILES - На отключаемом сетевом диске имеются открытые файлы и параметр ForceMode=false
Рекомендация: при отключении следует сначала попробовать отключить устройство с параметром ForceMode=false и при ошибке типа ERROR_OPEN_FILES выдать запрос с сообщением о том, что ус-во еще используется и предложением отключить принудительно, и при согласии пользователя повторить вызов с ForceMode=true
Источник: http://dmitry9.nm.ru/info/
ID: 03302
Category:Связь