注意不是映射(MapDrive),是提示用户密码的对话框。用WNetConnectionDialog1或WNetAddConnection3好像不行。
在Windows Explorer点击共享计算机的文件夹,如果对方没设密码,直接就可进入,但若对方设了密码,Win9x或XP就显示提示你输入密码的对话框,请问怎样调用此对话框?当然先要判断,用WNetAddConnection2,检查返回值,调用对话框,提示你输入用户名及密码。请问怎样调用此对话框?
在Windows Explorer点击共享计算机的文件夹,如果对方没设密码,直接就可进入,但若对方设了密码,Win9x或XP就显示提示你输入密码的对话框,请问怎样调用此对话框?当然先要判断,用WNetAddConnection2,检查返回值,调用对话框,提示你输入用户名及密码。请问怎样调用此对话框?
Private Sub Command1_Click()
Dim udtNetResource As NETRESOURCE
Dim lngWNetApiResultCode As Long
Dim strPassWord As String
Dim strUserName As String With udtNetResource
.dwScope = RESOURCE_GLOBALNET
.dwType = RESOURCETYPE_DISK
.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
.dwUsage = RESOURCEUSAGE_CONNECTABLE
.lpLocalName = vbnullstring
.lpRemoteName = "\\Planning2\D"
End With
strPassWord = vbNullString
strUserName = vbNullString
lngWNetApiResultCode = WNetAddConnection3(Me.hWnd, udtNetResource, strPassWord, _
strUserName, CONNECT_UPDATE_PROFILE Or _
CONNECT_INTERACTIVE Or CONNECT_PROMPT) If lngWNetApiResultCode = NO_ERROR Then
debug.Print "Successful"
ElseIf lngWNetApiResultCode = ERROR_CANCELLED Then
debug.Print "cancelled"
Else
debug.Print "Failed"
End If
End Sub Private Sub Command2_Click()
Dim lngWNetApiResultCode As Long
Dim strLocalName As String
strLocalName = vbnullstring
lngWNetApiResultCode = _
WNetCancelConnection2(strLocalName, CONNECT_UPDATE_PROFILE, False)
If lngWNetApiResultCode = NO_ERROR Then
Debug.Print "Cut OK"
Else
Debug.Print "Failed to Cut"
End If
End Sub
'bas module: Type 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 Type
Declare Function WNetAddConnection3 Lib "mpr.dll" _
Alias "WNetAddConnection3A" _
(ByVal hwndOwner As Long, _
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 Const RESOURCETYPE_DISK = &H1
Const RESOURCE_GLOBALNET = &H2
Const RESOURCEDISPLAYTYPE_SHARE = &H3
Const RESOURCEUSAGE_CONNECTABLE = &H1
Const CONNECT_UPDATE_PROFILE = &H1
Const CONNECT_INTERACTIVE = &H8
Const NO_ERROR = 0&
Const ERROR_CANCELLED = 1223&
Const CONNECT_PROMPT As Long = &H10
另外,你考虑问题是否太复杂了,试过用shell吗