SHGetFolderPath/SHGetFolderPathW (VC获取特殊目录)
HRESULT SHGetFolderPath(
_In_ HWND hwndOwner,
_In_ int nFolder,
_In_ HANDLE hToken,
_In_ DWORD dwFlags,
_Out_ LPTSTR pszPath
);
wstring strCddbCacheDirectory;
WCHAR szApplicationData[MAX_PATH] = L"";// MAX_PATH == 512
HRESULT hr = S_OK;
// get windows application data directory
hr = SHGetFolderPathW(
NULL, // HWND hwndOwner,
CSIDL_APPDATA,// int nFolder,
NULL, // HANDLE hToken,
0, // DWORD dwFlags,
szApplicationData// LPTSTR pszPath
);
if (hr == S_OK)
{
strCddbCacheDirectory= szApplicationData;
}
key:
Examples-2
The following code example uses SHGetFolderPath to find or create a folder and then creates a file in it.
TCHAR szPath[MAX_PATH]; if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PERSONAL|CSIDL_FLAG_CREATE, NULL, 0, szPath))) { PathAppend(szPath, TEXT("New Doc.txt")); HANDLE hFile = CreateFile(szPath, ...); }
Requirements
Minimum supported client | Windows 2000 Professional, Windows XP [desktop apps only] |
---|---|
Minimum supported server | Windows 2000 Server [desktop apps only] |
Header |
|
Library |
|
DLL |
|
Unicode and ANSI names | SHGetFolderPathW (Unicode) and SHGetFolderPathA (ANSI) |
links:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb762181.aspx