15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


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

Автор: Eber Irigoyen

Если возникла необходимость, чтобы Ваше приложение самостоятельно подключало сетевой ресурс, то это можно сделать двумя способами: вызвать стандартный диалог подключения ресурса либо использоваться следующий код.

Совместимость: Delphi все версии

 

//Пример открытия стандартного диалога

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;