獲得系統特殊路徑函數SHGetSpecialFolderLocation()

#include "shlobj.h" //包含頭文件
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation (HWND hwndOwner, int nFolder,LPITEMIDLIST * ppidl); //函數聲明

hwndOwner: 指定了"所有者窗口",在調用這個函數是可能出現的對話框或信息框.

nFolder: 是一個整數id,決定哪個目錄是待查找目錄,它的取值可能是
CSIDL_BITBUCKET                    回收站
CSIDL_CONTROLS                    控制面板
CSIDL_DESKTOP                      Windows桌面desktop;
CSIDL_DESKTOPDIRECTORY   desktop的目錄;

CSIDL_DRIVES                            我的電腦
CSIDL_FONTS                             字體目錄
CSIDL_NETHOOD                       網上鄰居
CSIDL_NETWORK                       網上鄰居virtual folder
CSIDL_PERSONAL                      我的文檔
CSIDL_PRINTERS                        打印機

CSIDL_PROGRAMS                    程序組
CSIDL_RECENT                          最近打開文檔
CSIDL_SENDTO                          發送到菜單項

CSIDL_STARTMENU                    快啓菜單

CSIDL_STARTUP                         啓動目錄

CSIDL_TEMPLATES                     臨時文檔
ppidl: pidl地址. SHGetSpecialFolderLocation把地址寫到pidl.

示例代碼VC++
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
char szDir[200];

if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pidl))) {
// 如果成功返回true
SHGetPathFromIDList(pidl, szDir);
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
::MessageBox (NULL,szDir,"Path",MB_OK);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章