C++ 获取系统文件夹路径

比如获取桌面路径:

	// 需要 #include <Shlobj.h>
	char path[255];
	SHGetSpecialFolderPath(
		NULL,							// 保留
		path,							// 接受文件路径的字符串指针
		CSIDL_DESKTOPDIRECTORY,			// CSIDL 宏
		FALSE							// 如果文件夹不存在,则不创建文件夹
	);cout << "path = " << path << endl;

在这里插入图片描述
SHGetSpecialFolderPath 的第三个参数决定了获取哪个文件夹的路径,参考如下:

介绍
CSIDL_ADMINTOOLS、CSIDL_COMMON_ADMINTOOLS管理工具
CSIDL_ALTSTARTUP、 CSIDL_COMMON_STARTUP、CSIDL_STARTUP程序 - 启动
CSIDL_APPDATAAppData
CSIDL_CDBURN_AREA临时刻录文件夹
CSIDL_COMMON_TEMPLATES、CSIDL_TEMPLATESTemplates
CSIDL_COMMON_APPDATAProgramData
CSIDL_COMMON_DESKTOPDIRECTORY、CSIDL_DESKTOP、CSIDL_DESKTOPDIRECTORY桌面
CSIDL_COMMON_DOCUMENTS、CSIDL_MYDOCUMENTS、CSIDL_PERSONAL文档
CSIDL_COMMON_FAVORITES、CSIDL_FAVORITES收藏夹
CSIDL_COMMON_MUSIC、CSIDL_MYMUSIC音乐
CSIDL_COMMON_PICTURES、CSIDL_MYPICTURES图片
CSIDL_COMMON_PROGRAMS、CSIDL_PROGRAMS开始菜单 - 程序
CSIDL_COMMON_STARTMENU、CSIDL_STARTMENU开始菜单
CSIDL_COMMON_VIDEO 、CSIDL_MYVIDEO视频
CSIDL_COOKIESINetCookies
CSIDL_FONTS字体
CSIDL_HISTORY历史
CSIDL_INTERNET_CACHEINetCache
CSIDL_LOCAL_APPDATAAppData/Local
CSIDL_NETHOODNetwork Shortcuts
CSIDL_PRINTHOODPrinter Shortcuts
CSIDL_PROFILE当前用户(Administrator)
CSIDL_PROGRAM_FILES 、CSIDL_PROGRAM_FILESX86Program Files
CSIDL_PROGRAM_FILES_COMMON、CSIDL_PROGRAM_FILES_COMMONX86Common Files
CSIDL_RECENT最近使用的项目
CSIDL_RESOURCESResources
CSIDL_SENDTO发送到
CSIDL_SYSTEMSystem32
CSIDL_SYSTEMX86SysWOW64
CSIDL_WINDOWSWindows
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中获取弹窗文件夹路径需要使用Win32 API函数。在Windows系统中,可以使用SHBrowseForFolder函数打开一个浏览文件夹的对话框,用户可以在对话框中选择一个文件夹,并将其路径返回。此外,要使用读取弹窗文件夹路径的功能,还需要使用SHGetPathFromIDList函数将选定的文件夹ID转换成文件夹路径。以下是获取弹窗文件夹路径的示例代码: #include <Windows.h> #include <ShlObj.h> int main() { TCHAR szDir[MAX_PATH]; BROWSEINFO bi = { 0 }; bi.lpszTitle = _T("Select a folder"); LPITEMIDLIST pidl = SHBrowseForFolder(&bi); if (pidl != 0) { // Convert the PIDL to a string if (SHGetPathFromIDList(pidl, szDir)) { MessageBox(NULL, szDir, _T("Selected folder"), MB_OK); } // Free the PIDL IMalloc * imalloc = 0; if (SUCCEEDED(SHGetMalloc(&imalloc))) { imalloc->Free(pidl); imalloc->Release(); } } return 0; } 该代码中首先定义了一个最大长度为 MAX_PATH 的 TCHAR 类型数组 szDir 保存文件夹路径。接着定义了一个 BROWSEINFO 结构体实例 bi 作为 SHBrowseForFolder 函数的参数,用于指定弹窗的标题。当用户点击对话框中的确定按钮选择了文件夹后,若选择了一个文件夹,则使用 SHGetPathFromIDList 函数将选定的文件夹ID转换成文件夹路径,并将其存储在 szDir 数组中,最终在弹窗中显示。需要注意的是,获取文件夹路径后还需要使用 IMalloc 接口释放所分配的内存,否则会导致内存泄漏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值