Connect/Disconnect network drives (Views: 29)
Problem/Question/Abstract: How do I map a drive letter to a network resource? Answer: //we could use the standard dialog to have the user do it procedure TForm1.Button1Click(Sender: TObject); begin WNetConnectionDialog(Handle, RESOURCETYPE_DISK) end; //we can use the same to connect a printer procedure TForm1.Button1Click(Sender: TObject); begin WNetConnectionDialog(Handle, RESOURCETYPE_PRINT) end; //or we can do this by code procedure TForm1.Button2Click(Sender: TObject); var NetResource: TNetResource; begin { fill out TNetResource record structure } NetResource.dwType := RESOURCETYPE_DISK; NetResource.lpLocalName := 'S:'; NetResource.lpRemoteName := '\\myserver\public'; NetResource.lpProvider := ''; { map our network drive using our TNetResource record structure } 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') //there are other constants to check the error //ERROR_ACCESS_DENIED, ERROR_ALREADY_ASSIGNED, etc end; //to disconnect it simply... procedure TForm1.Button2Click(Sender: TObject); begin if WNetCancelConnection2('S:', 0, TRUE) <> NO_ERROR then raise Exception.create('Error disconnecting map drive'); //of course there are also some other constants to check why the error //occurred: ERROR_DEVICE_IN_USE, ERROR_NOT_CONNECTED, etc end; |