zoukankan      html  css  js  c++  java
  • com 名字对象(3)使用IMoniker

    一.名字对象比较

    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
    );

  • 相关阅读:
    大三寒假学习进度笔记(十三)
    大三寒假学习进度笔记(十二)
    大三寒假学习进度笔记(十一)
    大三寒假学习进度笔记(十)
    大三寒假学习进度笔记(九)
    汇编第五章作业
    小饼日记2020/12/6
    小饼日记2020/12/2
    *reverse*练习10--很简单的重邮杯预赛
    记录一个牛逼的计算机组成原理老师
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2124280.html
Copyright © 2011-2022 走看看