获取系统文件夹路径

系统文件夹依用户的不同或者系统安装的不同而不同,那么在需要用到这些文件夹时就只有用程序获取了。

以下代码可以读入当前的系统文件夹:
首先要uses ShlObj, ActiveX;

function GetSystemPath(Folder: Integer): string;
var
    PIDL: PItemIDList;
    Path: LPSTR;
    AMalloc: IMalloc;
begin
    Path := StrAlloc(MAX_PATH);
    SHGetSpecialFolderLocation(Application.Handle, Folder, PIDL);
    if SHGetPathFromIDList(PIDL, Path) then
        Result := Path;
    SHGetMalloc(AMalloc);
    AMalloc.Free(PIDL);
    StrDispose(Path);
end;

该函数可以使用的参数如下:
也可以到MSDN去查
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
符号常量 系统文件夹

CSIDL_DESKTOPDIRECTORY Desktop文件夹

CSIDL_FONTS Fonts文件夹

CSIDL_NETHOOD NetHood文件夹

CSIDL_PERSONAL My Documents(我的文档)文件夹

CSIDL_PROGRAMS “开始”菜单(Start Menu)中的Programs(程序)文件夹

CSIDL_RECENT “开始”菜单(Start Menu)中的Recent(文档)文件夹

CSIDL_SENDTO Sendto(发送到)文件夹

CSIDL_STARTMENU Start Menu(“开始”菜单)文件夹

CSIDL_STARTUP 启动(Startup)文件夹

CSIDL_TEMPLATES ShellNew文件夹

CSIDL_COOKIES Cookies文件夹

CSIDL_INTERNET_CACHE Temporary Internet Files文件夹

CSIDL_PRINTHOOD PrintHood文件夹

CSIDL_APPDATA Application Data文件夹

CSIDL_FAVORITES Favorites文件夹

CSIDL_HISTORY History文件夹

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

余额充值