注意不是映射(MapDrive),是提示用户密码的对话框。用WNetConnectionDialog1或WNetAddConnection3好像不行。
   在Windows  Explorer点击共享计算机的文件夹,如果对方没设密码,直接就可进入,但若对方设了密码,Win9x或XP就显示提示你输入密码的对话框,请问怎样调用此对话框?当然先要判断,用WNetAddConnection2,检查返回值,调用对话框,提示你输入用户名及密码。请问怎样调用此对话框?

解决方案 »

  1.   

    例如做FolderTree,将My Computer本地磁盘所有的磁盘(A:\,C:\...,Thumb Drive,CD-ROM,Ram Diver)和本地网络共享电脑及文件夹放在treeview中。点击共享计算机的文件夹,如果对方没设密码,直接就可进入,但若对方设了密码,Win9x或XP就显示提示你输入密码的对话框,请问怎样调用此对话框?How to trig this event and bring out the password dialog box?
      

  2.   

    '示例:WNetAddConnection3 can't bring out the password dialog box
    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 
      

  3.   

    你这个问题问的不太好,我没弄明白,你调用WNetAddConnection2是什么目的,仅仅是为了显示那个对话框吗?
      

  4.   

    另外,这个函数的用法,随便用google一搜就有很多,比如:http://www.tomore.com/4/11962.html
      

  5.   

    根据MSDN,WNetAddConnection3能调用Login对话框。但不知为什么不行。我在做FolderTree,点击Node,若对方共享文件夹没设密码,就直接可以进入,反之,就调用Login Dialog Box.
      

  6.   

    rainstormmaster(暴风雨 v2.0) :不是MAPDrive窗口,是XP/Win9x Explorer's "Connect to xxx" 窗口。
      

  7.   

    //rainstormmaster(暴风雨 v2.0) :不是MAPDrive窗口,是XP/Win9x Explorer's "Connect to xxx" 窗口。我让你看的是WNetAddConnection2的用法
    另外,你考虑问题是否太复杂了,试过用shell吗