程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何取得某些特殊文件夾路徑

如何取得某些特殊文件夾路徑

編輯:Delphi

     在Windows 下有很多的特殊含義的文件夾,如桌面,網上鄰居,字體,我的文檔,
  程序組,最近文檔,發送到,開始菜單,啟動等,有時可能需要取得這些文件夾
  的真正路徑。
  一種方法是通過讀注冊表文件,存放在HKEY_CURRENT_USER根下,目錄為:
  SoftwareMicroSoftWindowsCurrentVersionExplorer
  可看到在shell folder段中存放著上述文件夾所對應的實際物理目錄,至於如何
  讀注冊表的操作不再給出,請自行解決。
  另一種方法是調用shell函數可以得到相應的目錄,但是不是所有在shell folder
  目錄下的文件夾都可以獲得,請注意。
  


  function GetSpecialFolderDir(const folderid:integer):string;
  var
  pidl:pItemIDList;
  buffer:array [ 0..255 ] of char ;
  begin
    //取指定的文件夾項目表
  
    SHGetSpecialFolderLocation( application.Handle , folderid, pidl);
    SHGetPathFromIDList(pidl, buffer);    //轉換成文件系統的路徑
  
    result:=strpas(buffer);
  end;
  


  其中:folderid可以取下面的值:但是請注意,有些是虛的文件夾,不是文件系統
  的一部分,所以用SHGetPathFromIDList是取不出路徑的,但是在此也列出了。打'*'
  號的為不是真正的文件系統,應該用作它用。
  


  CSIDL_BITBUCKET         *   回收站
  CSIDL_CONTROLS          *   控制面板
  CSIDL_DESKTOP           *   桌面
  CSIDL_DESKTOPDIRECTORY      桌面目錄       //如C:WindowsDesktop
  
CSIDL_DRIVES            *   我的電腦
  CSIDL_FONTS                 字體           //如C:WindowsFONTS
  
CSIDL_NETHOOD               網上鄰居目錄   //如C:WindowsNetHood
  
CSIDL_NETWORK           *   網上鄰居
  CSIDL_PERSONAL              我的文檔       //如C:My Documents
  
CSIDL_PRINTERS          *   打印機
  CSIDL_PROGRAMS              程序組         //如C:WindowsStart MenuPrograms
  
CSIDL_RECENT                最近文檔       //如C:WindowsRecent
  
CSIDL_SENDTO                發送到         //如C:WindowsSentTo
  
CSIDL_STARTMENU             開始菜單       //如C:WindowsStart Menu
  
CSIDL_STARTUP               啟動           //如C:Windows啟動
  
CSIDL_TEMPLATES             模版           //如C:WindowsShellNew
  


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