方案:先抓取文件夹,然后再读取文件夹中的各文件名。
//文件夹浏览通用对话框API函数
FUNCTION Long SHBrowseForFolder (REF str_BROWSEINFO lpBrowseInfo) LIBRARY "shell32.dll" ALIAS FOR "SHBrowseForFolderA;Ansi"
SUBROUTINE CoTaskMemFree (Long hMem ) LIBRARY "ole32.dll"
FUNCTION Long SHGetPathFromIDList(long pidList, REF string lpBuffer) LIBRARY "shell32.dll" ALIAS FOR "SHGetPathFromIDListA;Ansi"
global type str_browseinfo from structure
long hwndowner
long pidlroot
string displayname
string title
long flags
long pfn
long param
string image
end type
String ls_ReturnPathName
Long ll_rc
str_BROWSEINFO lstr_Info
Long ll_pIDlRoot
Long ll_BrowseInfoFlags
ls_ReturnPathName = Space( 256 )
ll_browseinfoflags = BIF_RETURNONLYFSDIRS + BIF_USENEWUI
//初始化结构browseinfo
lstr_info.hWndOwner = Handle( This )
lstr_info.DisplayName = ls_ReturnPathName
lstr_info.Title = "请选择文件夹目录:"
lstr_info.pidlroot = ll_pIDlRoot
lstr_info.flags = ll_BrowseInfoFlags
//显示文件夹浏览对话框
ll_rc = SHBrowseForFolder( lstr_Info )
IF ll_rc > 0 THEN
SHGetPathFromIDList( ll_rc, ls_ReturnPathName)
//释放内存
CoTaskMemFree(ll_rc)
Return RightTrim(ls_ReturnPathName)
Else
Return ""
End If