SHGetSpecialFolderLocation(需 `
| 常數 | 對應資料夾 |
|---|---|
| CSIDL_DESKTOP | Windows 桌面 |
| 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();
}
}
SHGetPathFromIDList 會失敗。SHGetKnownFolderPath (FOLDERID),但舊 API 仍相容。