惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
量子位
月光博客
月光博客
罗磊的独立博客
宝玉的分享
宝玉的分享
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
博客园 - 叶小钗
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
雷峰网
雷峰网
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
美团技术团队
爱范儿
爱范儿
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Y
Y Combinator Blog

博客园 - Lesliedi

GetDiskFreeSpaceEx的使用 项目管理怎么可以这样子! 小笨妞 浪费 夏走了 工作 走马观花------博 开始 换了 Byb F1---无言 asp.net中MultiPage 和TabStrrip的使用问题 为了花朵能灿烂地绽放 做吧,不要再想了 KIMI的那只轮胎 嗯..It was acclaimed as a discovery by someone!
查找文件夹
Lesliedi · 2006-10-16 · via 博客园 - Lesliedi

查找文件夹

Option Explicit
   
  Private Type BrowseInfo
          lngHwnd                 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
   
  Private Const BIF_RETURNONLYFSDIRS = 1
‘Private Const BIF_RETURNONLYFSDIRS = 100-----〉多一个新建文件夹的按钮
  Private 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
   
  Public Function BrowseForFolder(ByVal lngHwnd As Long, ByVal strPrompt As String) As String
   
          On Error GoTo ehBrowseForFolder         'Trap   for   errors
   
          Dim intNull     As Integer
          Dim lngIDList     As Long, lngResult       As Long
          Dim strPath     As String
          Dim udtBI     As BrowseInfo
   
          'Set   API   properties   (housed   in   a   UDT)
          With udtBI
                  .lngHwnd = lngHwnd
                  .lpszTitle = lstrcat(strPrompt, "")
                  .ulFlags = BIF_RETURNONLYFSDIRS
          End With
   
          'Display   the   browse   folder...
          lngIDList = SHBrowseForFolder(udtBI)
   
          If lngIDList <> 0 Then
                  'Create   string   of   nulls   so   it   will   fill   in   with   the   path
                  strPath = String(MAX_PATH, 0)
   
                  'Retrieves   the   path   selected,   places   in   the   null
                    'character   filled   string
                  lngResult = SHGetPathFromIDList(lngIDList, strPath)
   
                  'Frees   memory
                  Call CoTaskMemFree(lngIDList)
   
                  'Find   the   first   instance   of   a   null   character,
                    'so   we   can   get   just   the   path
                  intNull = InStr(strPath, vbNullChar)
                  'Greater   than   0   means   the   path   exists...
                  If intNull > 0 Then
                          'Set   the   value
                          strPath = Left(strPath, intNull - 1)
                  End If
          End If
   
          'Return   the   path   name
          BrowseForFolder = strPath
          Exit Function     'Abort
   
ehBrowseForFolder:
   
          'Return   no   value
          BrowseForFolder = Empty
   
  End Function
 
   
  Private Sub Command1_Click()
          Debug.Print BrowseForFolder(Me.hWnd, "a")
  End Sub

posted on 2006-10-16 18:29  Lesliedi  阅读(429)  评论()    收藏  举报