com 名字对象(3)使用IMoniker

转载 2012年03月30日 14:56:38

一.名字对象比较

Hash和IsEqual方法

IMoniker* moniker2=NULL;
CreateFileMoniker(OLESTR("F:\\test.xlsx"),&moniker2);
DWORD dw;
moniker2->Hash(&dw);
IMoniker* moniker3=NULL;
CreateFileMoniker(OLESTR("F:\\test2.xlsx"),&moniker3);
DWORD dw2;
moniker3->Hash(&dw2);
HRESULT hr= moniker2->IsEqual(moniker3);

IsRunning说明对象是否在运行,GetTimeOfLastChange获取对象最后一次修改时间

IBindCtx* bindCtx=NULL;
CreateBindCtx(0,&bindCtx);
FILETIME ft;
moniker3->GetTimeOfLastChange(bindCtx,NULL,&ft);
hr=moniker3->IsRunning(bindCtx,NULL,NULL);

二.管理复合名字对象

1.Inverse返回名字对象的逆名字对象

IMoniker* moniker2=NULL;
CreateFileMoniker(OLESTR("F:\\test.xlsx"),&moniker2);
IMoniker* moniker3=NULL;
CreateItemMoniker(OLESTR("!"),OLESTR("Sheet1"),&moniker3);
IMoniker* moniker4=NULL;
CreateGenericComposite(moniker2,moniker3,&moniker4);
LPOLESTR str;
IBindCtx* bindCtx=NULL;
CreateBindCtx(0,&bindCtx);
moniker4->GetDisplayName(bindCtx,NULL,&str);
IMoniker* moniker5=NULL;
moniker4->Inverse(&moniker5);
LPOLESTR str2;
moniker5->GetDisplayName(bindCtx,NULL,&str2);

原文件名字对象:F:\test.xlsx!Sheet1
逆名字对象:\..\..

2.IsSystemMoniker返回名字对象的类型

DWORD monikerType;
IMoniker* moniker2=NULL;
CreateFileMoniker(OLESTR("F:\\test.xlsx"),&moniker2);
moniker2->IsSystemMoniker(&monikerType);

 

typedef 
enum tagMKSYS
    {    MKSYS_NONE    = 0,
    MKSYS_GENERICCOMPOSITE    = 1,
    MKSYS_FILEMONIKER    = 2,
    MKSYS_ANTIMONIKER    = 3,
    MKSYS_ITEMMONIKER    = 4,
    MKSYS_POINTERMONIKER    = 5,
    MKSYS_CLASSMONIKER    = 7,
    MKSYS_OBJREFMONIKER    = 8,
    MKSYS_SESSIONMONIKER    = 9,
    MKSYS_LUAMONIKER    = 10
    }     MKSYS;

三.反-名字对象(CreateAntiMoniker)

在创建自定义名字对象时菜会用到这种名字对象.暂时不深究

四.三个处理FILETIME的函数

HRESULT CoFileTimeNow(
  FILETIME * lpFileTime
);

BOOL CoDosDateTimeToFileTime(
  WORD nDosDate,
  WORD nDosTime,
  FILETIME * lpFileTime
);

BOOL CoFileTimeToDosDateTime(
  FILETIME * lpFileTime,
  LPWORD lpDosDate,
  LPWORD lpDosTime
);

相关文章推荐

com 名字对象(1)IBindCtx

一.IBindCtx Provides access to a bind context, which is an object that stores information about a pa...

DirectX SDK版本与Visual Studio版本

  对于刚刚接触 DirectShow 的人来说,安装配置是一个令人头疼的问题,经常出现的情况是最基本的 baseclass 就无法编译。一开始我...

com 名字对象(2)创建名字对象(IMoniker)

1.文件名字对象 IUnknown* pUnk = NULL; IMoniker* moniker2=NULL; CreateFileMoniker(OLESTR("E:\\test.xlsx"...

在数据库连接名跟密码还有数据库名字也正确的时候报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied fo

56385 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1] WARN  com.mchange.v2.resourc...

com对象在易语言中的使用

  • 2014年05月07日 23:07
  • 142KB
  • 下载

使用MFC和晚绑定创建COM对象

  • 2009年10月27日 16:24
  • 648KB
  • 下载

创建和使用DirectX接口(并再次理解COM对象)

再次理解COM对象: 以前说:一个COM对象事实上是一个或一套实现了大量接口的C++类,这些接口用于和COM对象进行交流!!! 现在说:COM对象其实就是接口集,该接口集也就是函数指针(更准确的说...

WCE下创建MFC的COM对象及使用方法(一)

转载请标明是引用于 http://blog.csdn.net/chenyujing1234 平台:VS2005+MIPSSDK  例子代码:  http://www.rayfile.com/zh...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:com 名字对象(3)使用IMoniker
举报原因:
原因补充:

(最多只允许输入30个字)