VC 获取系统特殊文件夹的路径
在VC中,获取系统特殊文件夹的路径是一项非常有用的技术,例如获取系统目录、桌面等路径。本文将详细介绍如何使用SHGetSpecialFolderPath函数获取系统特殊文件夹的路径。
需要在 StdAfx.h 中添加 #include <shlobj.h>,然后使用SHGetSpecialFolderPath函数获取系统特殊文件夹的路径。该函数的原型为:
BOOL SHGetSpecialFolderPath(HWND hwnd, LPTSTR lpszPath, int csidl, BOOL fCreate);
其中,hwnd为窗口句柄,lpszPath为要获取的文件夹路径,csidl为系统特殊文件夹的标识符,fCreate为是否创建文件夹的标志。
csidl参数可以取以下值:
* CSIDL_BITBUCKET:回收站
* CSIDL_CONTROLS:控制面板
* CSIDL_DESKTOP:桌面
* CSIDL_DESKTOPDIRECTORY:桌面目录
* CSIDL_DRIVES:我的电脑
* CSIDL_FONTS:字体目录
* CSIDL_NETHOOD:网上邻居
* CSIDL_NETWORK:网上邻居虚拟目录
* CSIDL_PERSONAL:我的文档
* CSIDL_PRINTERS:打印机
* CSIDL_PROGRAMS:程序组
* CSIDL_RECENT:最近打开的文档
* CSIDL_SENDTO:“发送到”菜单项
* CSIDL_STARTMENU:任务条启动菜单项
* CSIDL_STARTUP:启动目录
* CSIDL_TEMPLATES:文档模板
例如,要获取桌面路径,可以使用以下代码:
TCHAR MyDir[_MAX_PATH];
SHGetSpecialFolderPath(this->GetSafeHwnd(), MyDir, CSIDL_DESKTOP, 0);
AfxMessageBox(MyDir);
这将弹出一个消息框,显示当前桌面的路径。
此外,还有许多其他的csidl参数可供选择,每个参数对应不同的系统特殊文件夹。例如,CSIDL_APPDATA用于获取应用程序数据文件夹路径,CSIDL_PERSONAL用于获取我的文档文件夹路径等。
需要注意的是,在使用SHGetSpecialFolderPath函数时,需要在VC开发环境中定义CSIDL_FLAG_CREATE标志,以便在文件夹不存在时创建文件夹。同时,某些csidl参数可能需要在VC98/include/SHLOBJ.H中定义。
使用SHGetSpecialFolderPath函数可以轻松地获取系统特殊文件夹的路径,从而方便地实现各种应用程序的需求。
- 1
- 2
前往页