CSIDL 表示的是windows shell中一个特殊文件夹的标识值。这里说的特殊文件夹指的是由windows shell所定义的文件夹,例如:"我的文档","回收站","Inernet Cache文件夹"就是一些由SHELL指定的特殊文件夹.这些特殊文件夹可以是一个磁盘上的物理路径,也可以是一个虚拟文件夹(Virtual Folder)!
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation( HWND hwndOwner, int nFolder, LPITEMIDLIST *ppidl); Retrieves the PIDL of a special folder. Returns NOERROR if successful, or an OLE-defined error result otherwise.hwndOwnerHandle to the owner window the client should specify if it displays a dialog box or message box.nFolderValue specifying the folder for which to retrieve the location. This parameter can be one of the following values:
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation( HWND hwndOwner, int nFolder, LPITEMIDLIST *ppidl); Retrieves the PIDL of a special folder. Returns NOERROR if successful, or an OLE-defined error result otherwise.hwndOwnerHandle to the owner window the client should specify if it displays a dialog box or message box.nFolderValue specifying the folder for which to retrieve the location. This parameter can be one of the following values:
// TestSHGetSpecialFolderLocation.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <io.h> #include <Shlobj.h> #pragma comment( lib, "shell32.lib" #include <string> #include <iostream> ) using namespace std; /* 功能:取用户的AppData路径,并在下面建一个新的目录 测试环境:WinXP SP3 + VS2010 最后更新日期:2014-6-12 参考资料:http://blog.csdn.net/roger_77/article/details/1538447 */ std::wstring GetLocalAppDataPath() { wchar_t m_lpszDefaultDir[MAX_PATH]; wchar_t szDocument[MAX_PATH] = {0}; memset(m_lpszDefaultDir, 0, _MAX_PATH); LPITEMIDLIST pidl = NULL; SHGetSpecialFolderLocation(NULL, CSIDL_LOCAL_APPDATA, &pidl); if (pidl && SHGetPathFromIDList(pidl, szDocument)) { GetShortPathName(szDocument,m_lpszDefaultDir, _MAX_PATH); } std::wstring wsR = m_lpszDefaultDir; return wsR; } std::wstring GetLocalAppDataPath(std::wstring appName) { std::wstring path = GetLocalAppDataPath(); path.append(L"\\"); path.append(appName); if ( _waccess(path.c_str(), 0) == -1 ) { _wmkdir(path.c_str()); } return path; } int _tmain(int argc, _TCHAR* argv[]) { const std::wstring AppName = L"kagula"; std::wstring path = GetLocalAppDataPath(AppName); std::wcout << path << std::endl; #ifdef _DEBUG ::system("pause"); #endif return 0; }
收藏的用户(0) X
正在加载信息~
推荐阅读
最新回复 (0)
站点信息
- 文章2312
- 用户1336
- 访客11620989
每日一句
Compliment yourself daily.
每天夸自己一句。
每天夸自己一句。
How to Ungroup Icons on Windows 11 Taskbar With a Registry Hack (and 2 More Ways)
反编译修改class文件变量
如何在大学成为一名优秀的程序员?
VMware NAT端口映射外网访问虚拟机linux
ubuntu下提取DSDT SSDT
使用HTML和CSS设计磨砂玻璃效果
解决android studio 4.4使用javah失败
vscode使用eslint自动代码格式化
c++浮点运算能力附安卓版
【源码】两种仪表盘
P2P中NAT之间的打洞可能性
jQuery的load方法Cannot read property 'indexOf' of undefined
【开源Roguelike游戏】素地牢源码
新会员