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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值