判断windows的Desktop及其它目录

      使用API函数SHGetSpecialFolder。shlobj.h里有SHGetSpecialFolder的原型声明。这个函数可以帮我们找到windows的Desktop目录、启动目录、我的文档目录等。

       SHGetSpecialFolder需要三个参数。 第一个参数是HWND,它指定了"所有者窗口":在调用这个函数时可能出现的对话框或消息框。第二个参数是一个整数id,决定哪个目录是待查找目录,它的取值可能是:

  • CSIDL_BITBUCKET 回收站
  • CSIDL_CONTROLS 控制面板
  • CSIDL_DESKTOP Windows 桌面desktop
  • CSIDL_DESKTOPDIRECTORY desktop的目录
  • CSIDL_DRIVES 我的电脑
  • CSIDL_FONTS 字体目录
  • CSIDL_NETHOOD 网上邻居
  • CSIDL_NETWORK 网上邻居virtual folder
  • CSIDL_PERSONAL 我的文档
  • CSIDL_PRINTERS 打印机
  • CSIDL_PROGRAMS 程序组
  • CSIDL_RECENT 大多数最近打开的文档列一
  • CSIDL_SENDTO “发送到”菜单项
  • CSIDL_STARTMENU 任务条启动菜单项
  • CSIDL_STARTUP 启动目录
  • CSIDL_TEMPLATES 临时文档

     最后一个参数是pidl地址。SHGetSpecialFolderLocation把地址写到pidl。

     下面的代码演示了怎样使用SHGetSpecialFolderLocation:

//----------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    LPITEMIDLIST  pidl;
    LPMALLOC      pShellMalloc;
    char          szDir[MAX_PATH];
 
    if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
    {
        if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,
                                                CSIDL_DESKTOPDIRECTORY,
                                                &pidl)))
        {
            // 如果成功返回true
            if(SHGetPathFromIDList(pidl, szDir))
            {
                Label1->Caption = szDir;
            }
 
            pShellMalloc->Free(pidl);
        }
 
        pShellMalloc->Release();
    }
}
//----------------------------------------------------------------------

注意: 有些目录是空的。有些特定的目录在这个文件系统上并没有一个相应的目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2000XP停止打印.bat ARP本机绑定.bat C盘转换为NTFS格式.cmd demo.gif dir.bat dos下重启.bat guest.bat sxs.exe 的查杀.bat sz.reg转换成reg.bat.bat temp.txt win2000关机命令.bat WIN2003 IIS最小权限分配.bat winxp修改计算机名.bat xp下确定最后的盘符.bat XP服务优化批处理.bat 不显示扩展名.bat 不显示隐藏文件.bat 中文显示ping结果.bat 使用WMI别名获取CPU信息.bat 全盘删除所有文件夹下的_desktop.ini.bat 关闭IDE通道检测.bat 列举进程.bat 删除大小和类型一样的文件.bat 删除所有分区的默认共享.bat 判断光驱是否可用.bat 判断光驱里有无光盘.bat 判断分区格式.bat 刷新策略.bat 取得硬盘数.bat 右键添加bat.bat 右键添加打开MS-DOS.bat 将cwindows.复制到当前目录并显示进度.bat 弹出光驱.bat 打开快捷方式指向的目录.bat 批处理读注册表的Run下面的值.bat 按扩展名分类.bat 改变我的文档路径.bat 断开网络联结.bat 显示c盘~z盘.bat 显示扩展名.bat 显示用户名.bat 显示网络配置.bat 显示自己的IP.bat 显示隐藏文件.bat 更改电源管理方式.bat 更改盘符.bat 更改系统启动菜单的时间.bat 枚举当前目录及子目录大小.bat 枚举显示.bat 查找最新的文件.bat 查看工作组.bat 查看物理内存.bat 查看用户是否存在.bat 查看电脑硬件信息.bat 查看网关的MAC地址.bat 查看进程使用的端口.bat 查看驱动器.bat 检查网络信息.bat 每个目录占用的空间.bat 百度关键字搜索.bat 禁止保留文档记录.bat 篮球飞人火爆版.cmd 绑定网关的批处理及预留维护提到.bat 结束进程.bat 给每个盘添加卷标.cmd 自动改回主页.bat 自定义配置网络ip、网关、dns.bat 被锁定帐户.bat 解锁注册表.BAT 输出倒文.bat 重命名administrator账号.bat 锁注册表.BAT

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值