牛骨文教育服务平台(让学习变的简单)
博文笔记

Windows 系统操作系列API-(1)-SHGetFolderPath

创建时间:2017-05-19 投稿人: 浏览次数:1144

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

Shlobj.h

Library

Shell32.lib

DLL

Shell32.dll (version 5.0 or later)

Unicode and ANSI names

SHGetFolderPathW (Unicode) and SHGetFolderPathA (ANSI)


links:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb762181.aspx

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。