高手看下,GetDetailsOf()获取文件属性的问题

lifuxianoa 2008-12-02 06:43:26
#include <iostream>
#include <string>
#import <Shell32.dll>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
Shell32::IShellDispatchPtr ptrShell;
ptrShell.CreateInstance(__uuidof(Shell32::Shell));
Shell32::FolderPtr ptrFolder = ptrShell->NameSpace("C:\\Windows");
Shell32::FolderItemPtr ptrItem = ptrFolder->ParseName("clock.avi");
for( int i = 0; i< 50; i++ )
{
string strName = ptrFolder->GetDetailsOf(0, i);
cout << i << strName << ":";
string strValue = ptrFolder->GetDetailsOf("clock.avi", i);
cout << strValue << endl;
}

ptrItem.Release();
ptrFolder.Release();
ptrShell.Release();
CoUninitialize();
return 0;
}

我想获取文件属性的值,为什么返回的是属性名字?
...全文
863 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangls1982 2011-03-09
  • 打赏
  • 举报
回复
string strValue = ptrFolder->GetDetailsOf( _variant_t((IDispatch *)ptrItem), i);

这样就可以了
liangls1982 2011-03-08
  • 打赏
  • 举报
回复
我也遇到了这样的问题,感谢楼主发帖,可以帮助解决问题
Jorry_c 2009-02-19
  • 打赏
  • 举报
回复
终于解决了.

你把这句删除了,
Shell32::FolderItemPtr ptrItem = ptrFolder->ParseName("clock.avi");

后边直接传文件夹或者文件的索引值,这样就能读出来了,否则读出来的就是属性名,而不是值.
Jorry_c 2009-02-19
  • 打赏
  • 举报
回复
我也遇到这样的问题了,也是没有答案.嗨,继续研究.....
heeten 2008-12-04
  • 打赏
  • 举报
回复
给出运行结果。
lifuxianoa 2008-12-04
  • 打赏
  • 举报
回复
运行结果如下:
0名称:名称
1大小:大小
2类型:类型
3修改日期:修改日期
4创建日期:创建日期
5访问日期:访问日期
6属性:属性
7状态:状态
8所有者:所有者
9作者:作者
10标题:标题
11主题:主题
12类别:类别
13页数:页数
14备注:备注
15版权:版权
16艺术家:艺术家
17唱片标题:唱片标题
18发行年:发行年
19曲目号码:曲目号码
20流派:流派
21持续时间:持续时间
22位速:位速
23受保护:受保护
24摄影机型号:摄影机型号
25相片拍照日期:相片拍照日期
26尺寸:尺寸
27:
28:
29集名:集名
30节目描述:节目描述
31:
32音频采样大小:音频采样大小
33音频采样级别:音频采样级别
34频道:频道
35公司:公司
36描述:描述
37文件版本:文件版本
38产品名称:产品名称
39产品版本:产品版本
40关键字:关键字
41:
42:
43:
44:
45:
46:
47:
48:
49:
请按任意键继续. . .

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧