这是两个已经封装好的函数AddConnection和CancelConnection,可直接用來設定或是取消網路磁碟,而模組可以參考程式的部分使用方法如下:建立連線 Function AddConnection(ByVal RemoteLocation As String, _ ByVal LocalDriver As String, _ ByVal Passwd As String, _ ByVal UserName As String) As Boolean RemoteLocation : 為網路磁碟機原始來源,格式為\\RemoteComputer\ShareDirectoryLocalDriver : 對應本機的磁碟機代號,如: "H:"Passwd: 存取網路磁碟機的Password,傳Null表示不用密碼UserName: 存取網路磁碟機的使用者代號這個函數成功時傳回True,否則為False例: Call AddConnection("\\Shih\cmias", "x:", vbNullString, "cww")取消連線 Function CancelConnection(ByVal LocalDriver As String, _ ByVal ForceClose As Boolean) As BooleanLocalDriver: 對應本機的磁碟機代號,如: "H:" ForceClose: True表示強迫結束連線,而不管有沒有程式正與之連線 函數執行成功時傳回True,否則為False例: Call CancelConnection("x:", True) 程式 '以下在.bas Option ExplicitType NETRESOURCE dwScope As Long dwType As Long dwDisplayType As Long dwUsage As Long lpLocalName As String lpRemoteName As String lpComment As String lpProvider As String End TypeDeclare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long Declare Function WNetGetLastError Lib "mpr.dll" Alias "WNetGetLastErrorA" (lpError As Long, ByVal lpErrorBuf As String, ByVal nErrorBufSize As Long, ByVal lpNameBuf As String, ByVal nNameBufSize As Long) As LongPublic Const RESOURCE_PUBLICNET = &H2 Public Const RESOURCETYPE_ANY = &H0 Public Const RESOURCEDISPLAYTYPE_GENERIC = &H0 Public Const RESOURCEUSAGE_CONNECTABLE = &H1 Public Const CONNECT_UPDATE_PROFILE = &H1'------------------------------------------------------------------------------------------------------- Public Function AddConnection(ByVal RemoteLocation As String, ByVal LocalDriver As String, ByVal Passwd As String, ByVal UserName As String) As BooleanDim ne As NETRESOURCE, i As Long Dim errstr As String, errpriv As String, erno As Longne.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC ne.dwScope = RESOURCE_PUBLICNET ne.dwType = RESOURCETYPE_ANY ne.dwUsage = RESOURCEUSAGE_CONNECTABLE ne.lpComment = vbNullString ne.lpLocalName = LocalDriver ne.lpProvider = vbNullString ne.lpRemoteName = RemoteLocationi = WNetAddConnection2(ne, Passwd, UserName, 0) If i = 0 Then AddConnection = True Else AddConnection = False errstr = String(256, 0) errpriv = String(256, 0) i = WNetGetLastError(erno, errstr, 256, errpriv, 256) errstr = Left(errstr, InStr(1, errstr, Chr(0)) - 1) MsgBox errstr, vbCritical End If End Function '------------------------------------------------------------------------------------------------------- Public Function CancelConnection(ByVal LocalDriver As String, ByVal ForceClose As Boolean) As Boolean Dim i As Long Dim errstr As String, errpriv As String, erno As Longi = WNetCancelConnection2(LocalDriver, 0, IIf(ForceClose, 1, 0)) If i = 0 Then CancelConnection = True Else CancelConnection = False errstr = String(256, 0) errpriv = String(256, 0) i = WNetGetLastError(erno, errstr, 256, errpriv, 256) errstr = Left(errstr, InStr(1, errstr, Chr(0)) - 1) MsgBox errstr, vbCritical End IfEnd Function
Private Declare Function WNetAddConnection Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String) As Long Private Declare Function WNetCancelConnection Lib "mpr.dll" Alias "WNetCancelConnectionA" (ByVal lpszName As String, ByVal bForce As Long) As LongPrivate Sub Command1_Click() Dim Ret As Long Ret = WNetAddConnection(Text1.Text, "", Combo1.Text) If Ret = 0 Then Combo1.RemoveItem Combo1.ListIndex Combo1.ListIndex = 0 MsgBox " 影射成功 !! "
Unload Me Else Drive1.Refresh MsgBox "影射失败,请检查路径是否正确" End If End SubPrivate Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim i As Integer Dim j As Integer For i = 0 To 25 Combo1.AddItem Chr(65 + i) & ":" Next For i = 0 To Drive1.ListCount - 1 j = ComIndex(Drive1.List(i)) If j <> -1 Then Combo1.RemoveItem j Next Combo1.ListIndex = 0 End SubPublic Function ComIndex(ByVal DriveName As String) Dim j As Integer For j = 0 To Combo1.ListCount - 1 If UCase(Mid(DriveName, 1, 1)) = Mid(Combo1.List(j), 1, 1) Then ComIndex = j Exit Function End If Next ComIndex = -1 End Function
这是两个已经封装好的函数AddConnection和CancelConnection,可直接用來設定或是取消網路磁碟,而模組可以參考程式的部分使用方法如下:建立連線
Function AddConnection(ByVal RemoteLocation As String, _
ByVal LocalDriver As String, _
ByVal Passwd As String, _
ByVal UserName As String) As Boolean RemoteLocation :
為網路磁碟機原始來源,格式為\\RemoteComputer\ShareDirectoryLocalDriver :
對應本機的磁碟機代號,如: "H:"Passwd: 存取網路磁碟機的Password,傳Null表示不用密碼UserName: 存取網路磁碟機的使用者代號這個函數成功時傳回True,否則為False例: Call AddConnection("\\Shih\cmias", "x:", vbNullString, "cww")取消連線
Function CancelConnection(ByVal LocalDriver As String, _
ByVal ForceClose As Boolean) As BooleanLocalDriver: 對應本機的磁碟機代號,如: "H:" ForceClose: True表示強迫結束連線,而不管有沒有程式正與之連線 函數執行成功時傳回True,否則為False例:
Call CancelConnection("x:", True) 程式 '以下在.bas
Option ExplicitType NETRESOURCE
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As String
lpRemoteName As String
lpComment As String
lpProvider As String
End TypeDeclare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long
Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long
Declare Function WNetGetLastError Lib "mpr.dll" Alias "WNetGetLastErrorA" (lpError As Long, ByVal lpErrorBuf As String, ByVal nErrorBufSize As Long, ByVal lpNameBuf As String, ByVal nNameBufSize As Long) As LongPublic Const RESOURCE_PUBLICNET = &H2
Public Const RESOURCETYPE_ANY = &H0
Public Const RESOURCEDISPLAYTYPE_GENERIC = &H0
Public Const RESOURCEUSAGE_CONNECTABLE = &H1
Public Const CONNECT_UPDATE_PROFILE = &H1'-------------------------------------------------------------------------------------------------------
Public Function AddConnection(ByVal RemoteLocation As String, ByVal LocalDriver As String, ByVal Passwd As String, ByVal UserName As String) As BooleanDim ne As NETRESOURCE, i As Long
Dim errstr As String, errpriv As String, erno As Longne.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC
ne.dwScope = RESOURCE_PUBLICNET
ne.dwType = RESOURCETYPE_ANY
ne.dwUsage = RESOURCEUSAGE_CONNECTABLE
ne.lpComment = vbNullString
ne.lpLocalName = LocalDriver
ne.lpProvider = vbNullString
ne.lpRemoteName = RemoteLocationi = WNetAddConnection2(ne, Passwd, UserName, 0)
If i = 0 Then
AddConnection = True
Else
AddConnection = False
errstr = String(256, 0)
errpriv = String(256, 0)
i = WNetGetLastError(erno, errstr, 256, errpriv, 256)
errstr = Left(errstr, InStr(1, errstr, Chr(0)) - 1)
MsgBox errstr, vbCritical
End If
End Function
'-------------------------------------------------------------------------------------------------------
Public Function CancelConnection(ByVal LocalDriver As String, ByVal ForceClose As Boolean) As Boolean
Dim i As Long
Dim errstr As String, errpriv As String, erno As Longi = WNetCancelConnection2(LocalDriver, 0, IIf(ForceClose, 1, 0))
If i = 0 Then
CancelConnection = True
Else
CancelConnection = False
errstr = String(256, 0)
errpriv = String(256, 0)
i = WNetGetLastError(erno, errstr, 256, errpriv, 256)
errstr = Left(errstr, InStr(1, errstr, Chr(0)) - 1)
MsgBox errstr, vbCritical
End IfEnd Function
http://vip.6to23.com/NowCan1/code/vs0205lj.zip
Private Declare Function WNetCancelConnection Lib "mpr.dll" Alias "WNetCancelConnectionA" (ByVal lpszName As String, ByVal bForce As Long) As LongPrivate Sub Command1_Click()
Dim Ret As Long
Ret = WNetAddConnection(Text1.Text, "", Combo1.Text)
If Ret = 0 Then
Combo1.RemoveItem Combo1.ListIndex
Combo1.ListIndex = 0
MsgBox " 影射成功 !! "
Unload Me
Else
Drive1.Refresh
MsgBox "影射失败,请检查路径是否正确"
End If
End SubPrivate Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim i As Integer
Dim j As Integer
For i = 0 To 25
Combo1.AddItem Chr(65 + i) & ":"
Next
For i = 0 To Drive1.ListCount - 1
j = ComIndex(Drive1.List(i))
If j <> -1 Then Combo1.RemoveItem j
Next
Combo1.ListIndex = 0
End SubPublic Function ComIndex(ByVal DriveName As String)
Dim j As Integer
For j = 0 To Combo1.ListCount - 1
If UCase(Mid(DriveName, 1, 1)) = Mid(Combo1.List(j), 1, 1) Then
ComIndex = j
Exit Function
End If
Next
ComIndex = -1
End Function