C++获取windows特殊文件夹路径

// VC++得到系统特殊文件夹路径

#include <windows.h>
#include <shlobj.h>
#include <stdio.h>

int main()
{
	printf("    VC++获取windows特殊文件夹路径  \n");
	//const int MAXN = 9;
	const int MAXN = 6;
	int nArrCSIDL[] = {
	//CSIDL_WINDOWS,
	//CSIDL_SYSTEM,
	//CSIDL_PROGRAM_FILES,
	CSIDL_DESKTOP,
	CSIDL_FAVORITES,
	CSIDL_FONTS,
	CSIDL_COOKIES,
	CSIDL_HISTORY,
	CSIDL_APPDATA,
	};
	char *pstrCSIDL[] = {
	//"CSIDL_WINDOWS",
	//"CSIDL_SYSTEM",
	//"CSIDL_PROGRAM_FILES",
	"CSIDL_DESKTOP",
	"CSIDL_FAVORITES",
	"CSIDL_FONTS",
	"CSIDL_COOKIES",
	"CSIDL_HISTORY",
	"CSIDL_APPDATA",
	};

	int i;
	for (i = 0; i < MAXN; i++)
	{
		char szBuffer[MAX_PATH];
		SHGetSpecialFolderPath(NULL, szBuffer, nArrCSIDL[i], FALSE);
		printf("%s\n\t%s\n", pstrCSIDL[i], szBuffer);
	}

	getchar();
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值