close
首頁 本類如何取得「我的文檔」和「Program Files」等目錄的實際路徑?

我想在程序中取得系統中的「我的文檔」和「Program Files」兩個目錄,並且在其中建立下級目錄,用什麼函數呢?  
 
因為如果機器中裝有多套系統,這兩個文件夾的位置是不同的,用什麼辦法可以得到當前的實際路徑?
  
請教各位!  


可能要讀註冊表阿


HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersPersonal就是我的文檔的路徑。
至於Program Files,是在每個磁盤下都會有的,它沒什麼特殊的,不過ie什麼的一般會裝到c盤的Program Files下。


SHGetSpecialFolderLocation(Handle,CSIDL_HISTORY, pidl);
SHGetPathFromIDList(pidl, buf); 
                                  //CSIDL_STARTMENU 當前用戶[開始]菜單
                                  //CSIDL_COMMON_STARTMENU 所有用戶[開始]菜單
                                  //CSIDL_COMMON_PROGRAMS 所有用戶[開始]-[程序]
                                  //CSIDL_COMMON_STARTUP 所有用戶[開始]-[程序]-[啟動]
                                  //CSIDL_DESKTOP        當前用戶[桌面]
                                  //CSIDL_PROGRAMS       當前用戶[開始]-[程序]
                                  //CSIDL_PERSONAL       當前用戶[My Document]我的文檔
                                  //CSIDL_FAVORITES      當前用戶[收藏夾]
                                  //CSIDL_STARTUP        當前用戶[開始]-[程序]-[啟動]
                                  //CSIDL_RECENT          當前用戶[Recent]文件夾
                                  //CSIDL_SENDTO          當前用戶[SendTo]文件夾
                                  //CSIDL_DESKTOPDIRECTORY  當前用戶[桌面]
                                  //CSIDL_NETHOOD          當前用戶[NetHood]網上鄰居
                                  //CSIDL_FONTS            字體文件夾
                                  //CSIDL_TEMPLATES        當前用戶[Templates]臨時文件目錄
                                  //CSIDL_COMMON_DESKTOPDIRECTORY 所有用戶[桌面]
                                  //CSIDL_APPDATA          當前用戶[Application Data]目錄
                                  //CSIDL_PRINTHOOD        當前用戶[PrintHood]目錄
                                  //CSIDL_COMMON_FAVORITES 所有用戶[Favorites]收藏夾
                                  //CSIDL_INTERNET_CACHE   當前用戶IE瀏覽器臨時文件夾
                                  //CSIDL_COOKIES          當前用戶[Cookies]目錄
                                  //CSIDL_HISTORY          當前用戶[History]歷史記錄目錄


//將.cpp文件前面的#include <vcl.h>註釋掉
//#include <vcl.h>
#include <ShlObj.h>
#include <ActiveX.hpp>
AnsiString GetSpecialFolderPath(HWND Handle,int CSID)
{
   char buf[MAX_PATH];
   LPITEMIDLIST pidl;
   memset(buf,0,MAX_PATH);
   if( SUCCEEDED(SHGetSpecialFolderLocation(Handle,CSID,&pidl)))
      SHGetPathFromIDList(pidl,buf);
   return AnsiString(buf);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 MessageBox (Handle,("我的文檔路徑為:"+GetSpecialFolderPath(Handle,CSIDL_PERSONAL)+" rProgram Files路徑為:"+GetSpecialFolderPath(Handle,CSIDL_PROGRAM_FILES)). c_str(),Caption.c_str(),MB_OK);
}


多謝各位。
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 chenni037 的頭像
    chenni037

    Kenny's Blog

    chenni037 發表在 痞客邦 留言(0) 人氣()