Windows 系统操作系列API-(1)-SHGetFolderPath
SHGetFolderPath/SHGetFolderPathW (VC获取特殊目录)
C++HRESULT SHGetFolderPath( _In_ HWND hwndOwner, _In_ int nFolder, _In_ HANDLE hToken, _In_ DWORD dwFlags, _Out_ LPTSTR pszPath );eg:
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:
· CSIDL_ADMINTOOLS
· CSIDL_APPDATA
· CSIDL_COMMON_ADMINTOOLS
· CSIDL_COMMON_APPDATA
· CSIDL_COMMON_DOCUMENTS
· CSIDL_COOKIES
· CSIDL_FLAG_CREATE
· CSIDL_FLAG_DONT_VERIFY
· CSIDL_HISTORY
· CSIDL_INTERNET_CACHE
· CSIDL_LOCAL_APPDATA
· CSIDL_MYPICTURES
· CSIDL_PERSONAL
· CSIDL_PROGRAM_FILES
· CSIDL_PROGRAM_FILES_COMMON
· CSIDL_SYSTEM
· CSIDL_WINDOWS
Examples-2
The following code example uses SHGetFolderPath to find or create a folder and then creates a file in it.
C++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
- 上一篇: 系统调用和库函数及API的区别
- 下一篇: Java、JVM和操作系统之间的关系,写给新人,