function ConnectDrive(_drvLetter: String; _netPath: String; _password: String; _username: String; _showError: Boolean; _reconnect: Boolean; _interactive: Boolean): DWORD; var nRes :TNetResource; dwFlags :DWORD; errCode :DWORD; begin FillChar(NRes,SizeOf(NRes),#0); nRes.dwType:=RESOURCETYPE_DISK; nRes.lpLocalName:=PChar(_drvLetter); nRes.lpRemoteName:=PChar(_netPath); nRes.dwScope:=RESOURCE_GLOBALNET; dwFlags:=0; If _reconnect then dwFlags:=CONNECT_UPDATE_PROFILE; If _reconnect and _interactive then dwFlags:=CONNECT_UPDATE_PROFILE and CONNECT_INTERACTIVE; Result:=WNetAddConnection3(form1.Handle,nRes,PChar(_password),PChar(_username),dwFlags); end; function DisConnectDrive(_drvLetter: String; _showError: Boolean; _force: Boolean; _save: Boolean): DWORD; var nRes :TNetResource; dwFlags :DWORD; errCode :DWORD; begin if _save then dwFlags:=CONNECT_UPDATE_PROFILE else dwFlags:=0; errCode:=WNetCancelConnection2(PChar(_drvLetter),dwFlags,_force); if (errCode<>NO_ERROR) and (_showError) then begin Application.MessageBox(PChar(SysErrorMessage(GetLastError)), 'Error Disconnecting Drive', MB_OK); end; Result:=errCode; {NO_ERROR} end;