程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB中用API函數實現文件夾列表

VB中用API函數實現文件夾列表

編輯:VB綜合教程
----在安裝軟件等一些操作中,需要用戶指定安裝路徑,現在軟件的安裝界面都是非常友好的,一般來說給出一個缺省路徑,用戶如不滿意可以在文件夾列表中選擇其他的路徑。在WIN9X下,一般不再采用原來的先在驅動器列表框中選擇驅動器再在相應的驅動器中選擇相應文件夾的界面,而是采用的類似資源管理器中“所有文件夾”界面:最上層是“桌面”,然後是“我的電腦”、驅動器A、C、D...等,在一個列表框中用戶可實現浏覽所有驅動器及文件夾的操作。這種特色的文件列表沒有現成的控件可供使用,但利用API函數可方便地實現。
  
  ----實現方法:API函數SHBrowseForFolder可以提供這樣的文件列表,它需要用到一個BROWSEINFO類型,此類型包括了列表框使用的參數,此類型的聲明見下面的程序,其中這裡用到的幾個參數簡單說明一下:
  
  ----hwndOwner—當前窗口的句柄。
  
  ----pidlRoot—從何根路徑開始展開文件夾,缺省情況下從“桌面”開始展開。
  
  ----lpszTitle—目錄樹上方的標題,用來給用戶一些提示信息。
  
  ----ulFlags—顯示標志控制項:比如若賦值為BIF_BROWSEFORCOMPUTER,則只有當用戶選擇“我的電腦”時“確定”按鈕才有效,這裡我們需要的是
  
  ----BIF_RETURNONLYFSDIRS,只有用戶選擇的是文件夾時“確定”按鈕才有效。
  
  ----此函數返回值是指向項目(ITEM)的一個指針,有了這個數值,再用API函數SHGetPathFromIDList可以獲得具體的路徑,如果用戶按的是“取消”按鈕,則返回值為NULL。
  
  ----下面是一個例子,在窗體中放置一個命令按鈕command1、一個文本框Text1,在窗體的聲明部分API聲明函數和類型及常量如下:
  
  OptionExplicit
  
  PrivateTypeBROWSEINFO
  hOwnerAsLong
  pidlRootAsLong
  pszDisplayNameAsString
  lpszTitleAsString
  ulFlagsAsLong
  lpfnAsLong
  lParamAsLong
  iImageAsLong
  EndType
  
  ConstBIF_RETURNONLYFSDIRS=&H1
  
  PrivatepidlAsLong
  
  PrivateDeclareFunction
  SHGetPathFromIDList_
  Lib"shell32.dll"Alias
  "SHGetPathFromIDListA"_
  (ByValpidlAsLong,ByVal
  pszPathAsString)AsLong
  
  PrivateDeclareFunction
  SHBrowseForFolderLib"shell32.dll"_
  Alias"SHBrowseForFolderA"_
  (lpBrowseInfoAsBROWSEINFO)AsLong
  
  ----雙擊命令按鈕,寫如下代碼:
  
  PrivateSubcommand1_Click()
  DimbiAsBROWSEINFO
  DimrAsLong
  DimpidlAsLong
  DimpathAsString
  DimposAsInteger
  '句柄
  bi.hOwner=Me.hWnd
  '展開根目錄
  bi.pidlRoot=0&
  '列表框標題
  bi.lpszTitle="請選擇軟件安裝路徑:"
  '規定只能選擇文件夾,其他無效
  bi.ulFlags=BIF_RETURNONLYFSDIRS
  '調用API函數顯示列表框
  pidl=SHBrowseForFolder(bi)
  '利用API函數獲取返回的路徑
  path=Space$(512)
  r=SHGetPathFromIDList(ByValpidl&,ByValpath)
  IfrThen
  pos=InStr(path,Chr$(0))
  Text1=Left(path,pos-1)
  Else:Text1=""
  EndIf
  EndSub
  
  ----運行此程序,單擊命令按鈕,就可以看到和資源管理器中一樣的“所有文件夾”列表了。
  
  ----此程序在中文WIN95/98、中文VB5.0專業版下調試通過,也適用於VB4.0。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved