|
| |||
|
|
Работа с сетевыми дисками (подключение/отключение) из Delphi unit NetworkU; interface // Узнать к какому сетевому пути подключен сетевой диск function NetGetConnection( NetDrive:Char ):String; // Удалить подключение к сетевому диску // Аналогично: net use <NetDrive>: /del function NetCancelConnection( NetDrive:Char ):String; // Добавить подключение к сетевому диску function NetAddConnection( NetDrive:Char; NetPath:String ):String; implementation uses Types, Windows; function NetGetConnection( NetDrive:Char ):String; var lpLocalName : PChar; lpRemoteName : PChar; Err : DWORD; MAX_SIZE : DWORD; begin MAX_SIZE := 3000; // Размер буфера для сетевого пути - если не будет хватать - можно увеличить GetMem( lpRemoteName, MAX_SIZE ); lpLocalName := PChar(String(NetDrive+':')); Err := WNetGetConnection( lpLocalName, lpRemoteName, MAX_SIZE ); case Err of NO_ERROR: Result := lpRemoteName; ERROR_BAD_DEVICE: Result := 'Значение "'+lpLocalName+'" неверно!'; ERROR_NOT_CONNECTED: Result := 'Устройство указанное в "'+lpLocalName+'" не переназначенное устройство.'; ERROR_MORE_DATA: Result := 'Буфер слишком маленький.'; ERROR_CONNECTION_UNAVAIL: Result := 'Устройство на данный момент не соединено, но это захваченная связь.'; ERROR_EXTENDED_ERROR: Result := 'Произошла сетевая специфическая ошибка. Для того чтобы получить информацию об ошибке, вызовите функцию WNetGetLastError.'; ERROR_NO_NET_OR_BAD_PATH: Result := 'Операция не выполнена потому что сетевой компонент не запущен или имя сетевого ресурса не может быть использовано.'; ERROR_NO_NETWORK: Result := 'Сеть отсутствует.'; end; end; function NetCancelConnection( NetDrive:Char ):String; var lpLocalName : PChar; Err : DWORD; begin lpLocalName := PChar(String(NetDrive+':')); Err := WNetCancelConnection( lpLocalName, true ); case Err of NO_ERROR: Result := NetDrive+' успешно отключён!'; ERROR_BAD_PROFILE: Result := 'Профиль пользователя неправильного формата.'; ERROR_CANNOT_OPEN_PROFILE: Result := 'Система не может открыть профиль пользователя.'; ERROR_DEVICE_IN_USE: Result := 'Устройство используется активным процессом и не может быть разъединено.'; ERROR_EXTENDED_ERROR: Result := 'Произошла сетевая специфическая ошибка. Для того чтобы получить информацию об ошибке, вызовите функцию WNetGetLastError.'; ERROR_NOT_CONNECTED: Result := 'Имя определенное параметром lpName - не переназначенное устройство или система к настоящему времени не подключена к устройству.'; ERROR_OPEN_FILES: Result := 'Если есть открытые файлы и параметр fForce равен False.'; end; end; function NetAddConnection( NetDrive:Char; NetPath:String ):String; var Err : DWORD; begin { подключаем сетевой pесуpс, используя структуру TNetResource } Err := WNetAddConnection( PChar(NetPath), '', // lpPassword, -- если нужен пароль для подключения - можно его сюда передать PChar(String(NetDrive+':')) //lpLocalName ); case Err of NO_ERROR: Result := NetDrive+' успешно подключён!'; ERROR_ACCESS_DENIED: Result := 'Нет доступа к сетевому ресурсу.'; ERROR_ALREADY_ASSIGNED: Result := 'Устройство указанное в параметре lpLocalName уже переопределено.'; ERROR_BAD_DEV_TYPE: Result := 'Тип устройства и тип ресурса не сочетается.'; ERROR_BAD_DEVICE: Result := 'Значение определенное в параметре lpLocalName неверно.'; ERROR_BAD_NET_NAME: Result := 'Значение определенное в параметре lpRemoteName неверно.'; ERROR_BAD_PROFILE: Result := 'Профиль пользователя неправильного формата.'; ERROR_CANNOT_OPEN_PROFILE: Result := 'Система не может открыть профиль пользователя.'; ERROR_DEVICE_ALREADY_REMEMBERED: Result := 'Привязка для устройства указанного в параметре lpLocalName - уже в профиле пользователя.'; ERROR_EXTENDED_ERROR: Result := 'Произошла сетевая специфическая ошибка. Для того чтобы получить информацию об ошибке, вызовите функцию WNetGetLastError.'; ERROR_INVALID_PASSWORD: Result := 'Пароль недействителен.'; ERROR_NO_NET_OR_BAD_PATH: Result := 'Операция не выполнена потому что сетевой компонент не запущен или имя сетевого ресурса не может быть использовано.'; ERROR_NO_NETWORK: Result := 'Сеть отсутствует.'; else Result := 'Неизвестная ошибка!'; end; end; end. |
||||||||||||||