zoukankan      html  css  js  c++  java
  • 转--SHGetSpecialFolderLocation函数

    函数原型: WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation( HWND hwndOwner, int nFolder, LPITEMIDLIST* ppidl ); 函数功能: 该函数获取一个特殊的文件夹的位置,比如我的电脑,回收站,台式机,打印机,字体,或各种文件系统的目录。

     
    函数原型:
    WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation(
      HWND hwndOwner, 
      int nFolder, 
      LPITEMIDLIST* ppidl 
    );

    函数功能:
    该函数获取一个特殊的文件夹的位置,比如我的电脑,回收站,台式机,打印机,字体,或各种文件系统的目录。

    函数参数:
    hwndOwner
    处理的所有者窗口的客户端应该指定是否显示一个对话框或消息框。

    nFolder 
    值,指定要检索的位置的文件夹。下表列出了可能的值。
    它充当应用程序特定数据的公共储存库CSIDL_APPDATA的文件系统目录。
    包含在用户的回收站文件对象CSIDL_BITBUCKET的文件系统目录。此目录的位置是不是在注册表中,它被标记为隐藏和系统属性,以防止用户移动或删除它。
    CSIDL_CONTROLS不支持。
    包含桌面项目CSIDL_DESKTOP虚拟文件夹。这是在虚拟的命名空间的根文件夹。
    用于桌面(不要与桌面文件夹本身混淆)上的物理存储文件对象CSIDL_DESKTOPDIRECTORY的文件系统目录。
    CSIDL_DRIVES我的电脑,这是一个包含一切的本地计算机上的虚拟文件夹:存储设备和打印机。该文件夹可能还包含映射的网络驱动器。
    它充当用户的喜爱项的公共储存库CSIDL_FAVORITES的文件系统目录。
    CSIDL_FONTS虚拟包含文件夹的字体。
    CSIDL_NETHOOD不支持。
    CSIDL_NETWORK网上邻居文件夹,这是代表网络层次结构的顶层虚拟文件夹。
    用作文档的公共储存库CSIDL_PERSONAL的文件系统目录。
    CSIDL_PRINTERS不支持。
    CSIDL_PROFILE文件夹包含用户的个人资料。
    CSIDL_PROGRAM_FILES Program Files文件夹。
    包含用户程序组(同时亦文件系统目录) CSIDL_PROGRAMS的文件系统目录。
    包含用户最近使用过的文档CSIDL_RECENT的文件系统目录。
    CSIDL_SENDTO不支持。
    包含开始菜单项目CSIDL_STARTMENU的文件系统目录。
    对应于用户的启动程序组CSIDL_STARTUP文件系统目录。在系统启动这些程序时,设备上电。
    CSIDL_TEMPLATES不支持。
    CSIDL_WINDOWS Windows文件夹。 
     
    ppidl
    指向一个LPITEMIDLIST结构

    函数返回:
    NOERROR表示成功。一个OLE定义的错误结果表明失败。

    易语言声明:
    .DLL命令 API_SHGetSpecialFolderLocation, , "shell32.dll", "SHGetSpecialFolderLocation",  
        .参数 hwnd, 整数型, , 
        .参数 csidl, 整数型, , 
        .参数 ppidl, ITEMIDLIST, , 

    VB声明:
    Declare Sub SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwnd As Long, ByVal csidl As Long, ByRef ppidl As ITEMIDLIST)

    使用方法:
    下面以在VC中使用为例来获取桌面路径,代码如下: 
    LPITEMIDLIST ppidl;
    char lpsbuf[255];
    SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP   ,&ppidl);
    SHGetPathFromIDList(ppidl,lpsbuf);
    MessageBox(lpsbuf);

    在其它语言中用法类似,由于其它语言需要声明结构就不演示了,按照上面的语法即可获取相应的路径了,路径的说明请看函数的nFolder参数说明!
  • 相关阅读:
    fast incremental backup failed on standby database
    How to find error message from OMS repository
    Examine 11g automatic block Corruption recovery
    C#继承Control实用自定义控件
    手把手教你写SHELL CODE
    编写C#控件的3种方式
    Android中跨越ACTIVITY的全局线程
    DevExpress 皮肤使用方法
    PHP讨论之什么是HOOK?
    C#制作WinForm控件
  • 原文地址:https://www.cnblogs.com/rosesmall/p/14777604.html
Copyright © 2011-2022 走看看