首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

取得 Windows 特殊資料夾路徑:SHGetSpecialFolderLocation 完整指南

     編輯:VC 教學

API 簡介

SHGetSpecialFolderLocation(需 ``)可取得桌面、我的文件、啟動目錄等系統特殊資料夾的 PIDL(項目 ID 清單),再轉為實體路徑。

常用 CSIDL 常數

常數對應資料夾
CSIDL_DESKTOPWindows 桌面
CSIDL_DESKTOPDIRECTORY桌面實體目錄
CSIDL_PERSONAL我的文件
CSIDL_STARTUP啟動目錄
CSIDL_PROGRAMS開始功能表程式群
CSIDL_SENDTO「傳送到」選單
CSIDL_BITBUCKET資源回收筒
CSIDL_FONTS字型資料夾

完整程式碼範例(取得桌面目錄)


void __fastcall TForm1::Button1Click(TObject *Sender)
{
    LPITEMIDLIST pidl;
    LPMALLOC pShellMalloc;
    char szDir[MAX_PATH];

    if (SUCCEEDED(SHGetMalloc(&pShellMalloc))) {
        if (SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &pidl))) {
            if (SHGetPathFromIDList(pidl, szDir)) {
                Label1->Caption = szDir; // 顯示路徑
            }
            pShellMalloc->Free(pidl); // 釋放 PIDL
        }
        pShellMalloc->Release();
    }
}

注意事項

  • 部份 CSIDL 可能無實體路徑(如虛擬資料夾),SHGetPathFromIDList 會失敗。
  • Vista+ 建議改用 SHGetKnownFolderPath (FOLDERID),但舊 API 仍相容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved