Module1.bas
上传用户:wxknfb
上传日期:2022-08-10
资源大小:4k
文件大小:2k
源码类别:

网络编程

开发平台:

Visual Basic

  1. Attribute VB_Name = "Module1"
  2. Option Explicit
  3. '****************************************************************************
  4. '人人为我,我为人人
  5. '枕善居汉化收藏整理
  6. '发布日期:05/03/29
  7. '描述:一个共享远程文件夹源码示例
  8. '网站:http://www.mndsoft.com
  9. 'e-mail:mnd@mndsoft.com
  10. '****************************************************************************
  11. 'typedef struct _browseinfo {
  12. '    HWND hwndOwner;          // see below
  13. '    LPCITEMIDLIST pidlRoot;  // see below
  14. '    LPSTR pszDisplayName;    // see below
  15. '    LPCSTR lpszTitle;        // see below
  16. '    UINT ulFlags;            // see below
  17. '    BFFCALLBACK lpfn;        // see below
  18. '    LPARAM lParam;           // see below
  19. '    int iImage;              // see below
  20. '} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;
  21. 'WINSHELLAPI BOOL WINAPI SHGetPathFromIDList(
  22. '    LPCITEMIDLIST pidl,
  23. '    LPSTR pszPath
  24. '   );
  25. 'WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(
  26. '    LPBROWSEINFO lpbi
  27. '   );
  28. Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Boolean
  29. Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BROWSEINFO) As Long
  30. Private Type BROWSEINFO
  31.     hWndOwner As Long
  32.     pidlRoot As Long      ' typedef struct LPCITEMIDLIST
  33.     pszDisplayName As String
  34.     lpszTitle As String
  35.     ulFlags As Long
  36.     lpfn As Long          'BrowseCallbackProc or NULL
  37.     lParam As Long
  38.     iImage As Integer
  39. End Type
  40. Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
  41. Private Const BIF_BROWSEFORPRINTER As Long = &H2000
  42. Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
  43. Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
  44. Private Const BIF_RETURNONLYFSDIRS As Long = &H1
  45. Private Const BIF_STATUSTEXT As Long = &H4
  46. Private Const BIF_RETURNFSANCESTORS As Long = &H8
  47. Private Const MAX_PATH As Long = 260
  48. Public Function SetFolder(hwnd As Long, Titulo As String) As String
  49.     Dim shb As BROWSEINFO
  50.     Dim res As Long, res1 As Boolean
  51.     Dim s As String
  52.     
  53.     shb.hWndOwner = hwnd
  54.     shb.lpszTitle = Titulo & vbNullChar
  55.     shb.pszDisplayName = vbNullString
  56.     shb.ulFlags = BIF_RETURNONLYFSDIRS 'only folder
  57.     shb.lpfn = 0&
  58.     shb.iImage = 1
  59.     
  60.     
  61.     res = SHBrowseForFolder(shb)
  62.     If res <> 0 Then
  63.         s = Space(MAX_PATH + 1)
  64.         res1 = SHGetPathFromIDList(res, s)
  65.         DoEvents
  66.           If res1 = 1 Then SetFolder = s
  67.     End If
  68. End Function