ali-se
سه شنبه 18 اسفند 1394, 04:43 صبح
سلام
دوستان من یه برنامه کوچیک دارم که داخل آن نیاز هست کاربر یه فولدر رو انتخاب کنه و برنامه لیست فایل های درون اونه استخراج کنه
یه تابع به شکل زیر تو اینترنت پیدا کردم ، ولی یه مشکل داره وقتی پنجره انتخاب فولدرباز میشه ، Shortcut ها رو نشون نمیده!
و تو مسیرهای طولانی داخل شبکه این قضیه خیلی اذیت می کنه.
میشه راهنمایی بفرمائید.
Private Type BrowseInfo
hOwner As Long
pIDLRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
"SHBrowseForFolderA" (lpBrowseInfo As BrowseInfo) _
As Long
Private Const BIF_RETURNONLYFSDIRS = &H1
'------------------------------------------------------------------------------------------------------------
Public Function BrowseFolder(szDialogTitle As String) As String
Dim X As Long, bi As BrowseInfo, dwIList As Long
Dim szPath As String, wPos As Integer
With bi
.hOwner = hWndAccessApp
.lpszTitle = szDialogTitle
' .ulFlags = BIF_RETURNONLYFSDIRS
.ulFlags = BIF_RETURNALL
End With
dwIList = SHBrowseForFolder(bi)
szPath = Space$(512)
X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
If X Then
wPos = InStr(szPath, Chr(0))
BrowseFolder = Left$(szPath, wPos - 1)
Else
BrowseFolder = vbNullString
End If
End Function
'*********** Code End ***********
ممنون
دوستان من یه برنامه کوچیک دارم که داخل آن نیاز هست کاربر یه فولدر رو انتخاب کنه و برنامه لیست فایل های درون اونه استخراج کنه
یه تابع به شکل زیر تو اینترنت پیدا کردم ، ولی یه مشکل داره وقتی پنجره انتخاب فولدرباز میشه ، Shortcut ها رو نشون نمیده!
و تو مسیرهای طولانی داخل شبکه این قضیه خیلی اذیت می کنه.
میشه راهنمایی بفرمائید.
Private Type BrowseInfo
hOwner As Long
pIDLRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
"SHBrowseForFolderA" (lpBrowseInfo As BrowseInfo) _
As Long
Private Const BIF_RETURNONLYFSDIRS = &H1
'------------------------------------------------------------------------------------------------------------
Public Function BrowseFolder(szDialogTitle As String) As String
Dim X As Long, bi As BrowseInfo, dwIList As Long
Dim szPath As String, wPos As Integer
With bi
.hOwner = hWndAccessApp
.lpszTitle = szDialogTitle
' .ulFlags = BIF_RETURNONLYFSDIRS
.ulFlags = BIF_RETURNALL
End With
dwIList = SHBrowseForFolder(bi)
szPath = Space$(512)
X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
If X Then
wPos = InStr(szPath, Chr(0))
BrowseFolder = Left$(szPath, wPos - 1)
Else
BrowseFolder = vbNullString
End If
End Function
'*********** Code End ***********
ممنون