>* Program...........: NetAddConnect >* Author............: Daniel Gramunt >* Created...........: 22.09.2000 14:45:27 >*) Description.......: Wrapper to the API function WNetAddConnection2(). >*) : This program is using Christof Lange's struct class. >*) : Returns 0 if successful >* Calling Samples...: NetAddConnect("\\MyServer\apps\", "K:", "UserId", "Password") >* Parameter List....: >* Major change list.: >*-------------------------------------------------------------------------------------------------- >LPARAMETER tcNetworkName, tcDriveLetter, tcUserName, tcPassword > >*-------------------------------------------------------------------------------------------------- >*-- Bit flag for fdwConnection in WNetAddConnection2() >*-------------------------------------------------------------------------------------------------- >#DEFINE CONNECT_UPDATE_PROFILE 0x00000001 > >*-------------------------------------------------------------------------------------------------- >*-- Error values returned by WNetAddConnection2() >*-------------------------------------------------------------------------------------------------- >#DEFINE NO_ERROR 0 >#DEFINE ERROR_ACCESS_DENIED 5 >#DEFINE ERROR_ALREADY_ASSIGNED 85 >#DEFINE ERROR_BAD_DEV_TYPE 66 >#DEFINE ERROR_BAD_DEVICE 1200 >#DEFINE ERROR_BAD_NET_NAME 67 >#DEFINE ERROR_BAD_PROFILE 1206 >#DEFINE ERROR_BAD_PROVIDER 1204 >#DEFINE ERROR_BUSY 170 >#DEFINE ERROR_CANCELLED 1223 >#DEFINE ERROR_CANNOT_OPEN_PROFILE 1205 >#DEFINE ERROR_DEVICE_ALREADY_REMEMBERED 1202 >#DEFINE ERROR_EXTENDED_ERROR 1208 >#DEFINE ERROR_INVALID_PASSWORD 86 >#DEFINE ERROR_NO_NET_OR_BAD_PATH 1203 >#DEFINE ERROR_NO_NETWORK 1222 > >*-------------------------------------------------------------------------------------------------- >*-- NETRESOURCE structure: scope of enumeration (dwScope) >*-------------------------------------------------------------------------------------------------- >#DEFINE RESOURCE_CONNECTED 0x00000001 >#DEFINE RESOURCE_GLOBALNET 0x00000002 >#DEFINE RESOURCE_REMEMBERED 0x00000003 > >*-------------------------------------------------------------------------------------------------- >*-- NETRESOURCE structure: bitmask of resource type (dwType) >*-------------------------------------------------------------------------------------------------- >#DEFINE RESOURCETYPE_ANY 0x00000000 >#DEFINE RESOURCETYPE_DISK 0x00000001 >#DEFINE RESOURCETYPE_PRINT 0x00000002 > >*-------------------------------------------------------------------------------------------------- >*-- NETRESOURCE structure: display type (dwDisplayType) >*-------------------------------------------------------------------------------------------------- >#DEFINE RESOURCEDISPLAYTYPE_GENERIC 0x00000000 >#DEFINE RESOURCEDISPLAYTYPE_DOMAIN 0x00000001 >#DEFINE RESOURCEDISPLAYTYPE_SERVER 0x00000002 >#DEFINE RESOURCEDISPLAYTYPE_SHARE 0x00000003 > >*-------------------------------------------------------------------------------------------------- >*-- NETRESOURCE structure: bitmask of resource usage (dwUsage) >*-------------------------------------------------------------------------------------------------- >#DEFINE RESOURCEUSAGE_CONNECTABLE 0x00000001 >#DEFINE RESOURCEUSAGE_CONTAINER 0x00000002 > >*-- check parameters >ASSERT TYPE("tcNetworkName") = "C" AND NOT EMPTY(tcNetworkName) >ASSERT TYPE("tcDriveLetter") = "C" AND NOT EMPTY(tcDriveLetter) > >tcDriveLetter = LEFT(UPPER(tcDriveLetter),1) > >*-- make sure drive letter is between G and Z >IF NOT BETWEEN(ASC(tcDriveLetter), 71, 90) > WAIT WINDOW NOWAIT "Drive letter must be between G and Z!" > RETURN -1 >ELSE > *-- add colon to drive letter > tcDriveLetter = tcDriveLetter + ":" >ENDIF > >*-- optional parameters >tcUserName = IIF(TYPE("tcUserName") = "C", tcUserName, "") >tcPassword = IIF(TYPE("tcPassword") = "C", tcPassword, "") > >*-- declare API function >Declare Integer WNetAddConnection2 in Win32API ; > String lpNetResource, ; > String lpPassword, ; > String lpUsername, ; > Integer fdwConnection > >*-- create structure >LOCAL loNetResource >SET CLASSLIB TO Struct ADDITIVE > >loNetResource = CreateObject("NETRESOURCE") > >With loNetResource > .dwScope = RESOURCE_GLOBALNET > .dwType = RESOURCETYPE_DISK && required by WNetAddConnection2 > .dwDisplayType = 0 > .dwUsage = RESOURCEUSAGE_CONNECTABLE > .lpLocalName = tcDriveLetter && required by WNetAddConnection2 > .lpRemoteName = tcNetworkName && required by WNetAddConnection2 > .lpComment = .NULL. > .lpProvider = .NULL. && required by WNetAddConnection2 >EndWith > >lpNetResource = loNetResource.GetString() >lpPassword = tcPassword >lpUsername = tcUsername >fdwConnection = CONNECT_UPDATE_PROFILE > >*-- call API function >lnRetVal = WNetAddConnection2(lpNetResource, ; > lpPassword, ; > lpUsername, ; > fdwConnection) > >RELEASE CLASSLIB Struct > >RETURN lnRetVal >*-- EOF Function NetAddConnect -------------------------------------------------------------------- > >DEFINE CLASS NETRESOURCE AS struct > dwScope = 0 > dwType = 0 && required by WNetAddConnection2 > dwDisplayType = 0 > dwUsage = 0 > lpLocalName = .NULL. && required by WNetAddConnection2 > lpRemoteName = .NULL. && required by WNetAddConnection2 > lpComment = .NULL. > lpProvider = .NULL. && required by WNetAddConnection2 > > cMembers = "l:dwScope, l:dwType, l:dwDisplayType, l:dwUsage, "+; > "pz:lpLocalName, pz:lpRemoteName, pz:lpComment, pz:lpProvider" >ENDDEFINE>