zoukankan      html  css  js  c++  java
  • 取得某些特殊文件夹路径

    取得某些特殊文件夹路径

     

     

     

       在Windows 下有很多的特殊含义的文件夹,如桌面,网上邻居,字体,我的文档,
    程序组,最近文档,发送到,开始菜单,启动等,有时可能需要取得这些文件夹
    的真正路径。
    一种方法是通过读注册表文件,存放在HKEY_CURRENT_USER根下,目录为:
    SoftwareMicroSoftWindowsCurrentVersionExplorer
    可看到在shell folder段中存放着上述文件夹所对应的实际物理目录,至于如何
    读注册表的操作不再给出,请自行解决。
    另一种方法是调用shell函数可以得到相应的目录,但是不是所有在shell folder
    目录下的文件夹都可以获得,请注意。


    function GetSpecialFolderDir(const folderid:integer):string;
    var
    pidl:pItemIDList;
    buffer:array [ 0..255 ] of char ;
    begin
      //取指定的文件夹项目表
        SHGetSpecialFolderLocation( application.Handle , folderid, pidl);
      SHGetPathFromIDList(pidl, buffer);    //转换成文件系统的路径
        result:=strpas(buffer);
    end;


    其中:folderid可以取下面的值:但是请注意,有些是虚的文件夹,不是文件系统
    的一部分,所以用SHGetPathFromIDList是取不出路径的,但是在此也列出了。打*
    号的为不是真正的文件系统,应该用作它用。


    CSIDL_BITBUCKET         *   回收站
    CSIDL_CONTROLS          *   控制面板
    CSIDL_DESKTOP           *   桌面
    CSIDL_DESKTOPDIRECTORY      桌面目录       //如C:WINDOWSDesktop
    CSIDL_DRIVES            *   我的电脑
    CSIDL_FONTS                 字体           //如C:WINDOWSFONTS
    CSIDL_NETHOOD               网上邻居目录   //如C:WINDOWSNetHood
    CSIDL_NETWORK           *   网上邻居
    CSIDL_PERSONAL              我的文档       //如C:My Documents
    CSIDL_PRINTERS          *   打印机
    CSIDL_PROGRAMS              程序组         //如C:WINDOWSStart MenuPrograms
    CSIDL_RECENT                最近文档       //如C:WINDOWSRecent
    CSIDL_SENDTO                发送到         //如C:WINDOWSSentTo
    CSIDL_STARTMENU             开始菜单       //如C:WINDOWSStart Menu
    CSIDL_STARTUP               启动           //如C:WINDOWS启动
    CSIDL_TEMPLATES             模版           //如C:WINDOWSShellNew

  • 相关阅读:
    const
    ImportError: No module named google.protobuf
    ImportError: No module named google.protobuf
    多线程同步与单线程异步对比
    多线程同步与单线程异步对比
    再谈select, iocp, epoll,kqueue及各种I/O复用机制
    再谈select, iocp, epoll,kqueue及各种I/O复用机制
    poj1180
    poj3254
    poj3321
  • 原文地址:https://www.cnblogs.com/findumars/p/3481395.html
Copyright © 2011-2022 走看看