VB 选择目录对话框实现(API)

Private  Type BrowseInfo
    hWndOwner 
As   Long
    pIDLRoot 
As   Long
    pszDisplayName 
As   Long
    lpszTitle 
As   Long
    ulFlags 
As   Long
    lpfnCallback 
As   Long
    lParam 
As   Long
    iImage 
As   Long
End  Type
Const  BIF_RETURNONLYFSDIRS  =   1
Const  MAX_PATH  =   260
Private   Declare   Sub  CoTaskMemFree  Lib   " ole32.dll "  ( ByVal  hMem  As   Long )
Private   Declare   Function  lstrcat  Lib   " kernel32 "   Alias   " lstrcatA "  ( ByVal  lpString1  As   String ByVal  lpString2  As   String As   Long
Private   Declare   Function  SHBrowseForFolder  Lib   " shell32 "  (lpbi  As  BrowseInfo)  As   Long
Private   Declare   Function  SHGetPathFromIDList  Lib   " shell32 "  ( ByVal  pidList  As   Long ByVal  lpBuffer  As   String As   Long

Private   Function  getFolder( ByVal  title  As   String As   String
    
Dim  iNull  As   Integer , lpIDList  As   Long , lResult  As   Long
    
Dim  sPath  As   String , udtBI  As  BrowseInfo
    
With  udtBI
        
' 设置弹出的对话框的父窗口句柄
        .hWndOwner  =   Me .hWnd
        .lpszTitle 
=  lstrcat(title,  "" ' 标题
        .ulFlags  =  BIF_RETURNONLYFSDIRS
    
End   With

    lpIDList 
=  SHBrowseForFolder(udtBI)
    
If  lpIDList  Then
        sPath 
=   String $(MAX_PATH,  0 )
        SHGetPathFromIDList lpIDList, sPath
        CoTaskMemFree lpIDList
        iNull 
=   InStr (sPath, vbNullChar)
        
If  iNull  Then
            sPath 
=   Left $(sPath, iNull  -   1 )
        
End   If
    
End   If
    getFolder 
=  sPath
End Function

Private   Sub  Command1_Click()
Text1.Text 
=  getFolder( " 请选择文件夹 " )
End Sub

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值