代码之家  ›  专栏  ›  技术社区  ›  Oliver Giesen

如何可靠地判断两个Inspector引用指向同一个Inspector实例?

  •  1
  • Oliver Giesen  · 技术社区  · 17 年前

    Is there a way to tell whether two COM interface references point at the same instance? ]

    我有参考文献 Inspector

    • compare the IUnknown interfaces 似乎 Inspectors.Item() 方法返回对动态创建的代理对象的引用,而不是对inspector实例本身的引用。试试看:访问同一个索引两次将返回两个截然不同的指针。

    • 比较 Inspector.CurrentItem.EntryID EntryID 始终为空,并且一次可能有多个未保存的项目处于打开状态。

    • Inspector.Caption Inspector.CurrentItem.Subject

    • Inspector.CurrentItem.Subject (或任何其他项目属性)设置为明确的值,然后在其他列表类型中查找该值,但会产生恼人的副作用,将检查器中的项目标记为“脏”,即再次关闭检查器时,将要求用户保存该项目(即使他只是查看收到的邮件)。

    还有其他想法吗?


    我正在尝试解决一个众所周知的错误/功能,即通过简单MAPI启动的新电子邮件(例如,在资源管理器上下文菜单中发送到>邮件收件人)不会生成错误 Inspectors.NewInspector 事件,因此无法向这些检查器添加任何加载项功能(例如,添加工具栏按钮或在创建消息时执行代码)。在我的COM插件中,我有一个要捕获的包装器对象的内部列表 检查员 Inspector.Close 事件。

    作为一种替代方法,我使用了一个shell钩子:现在,每当创建或销毁一个新的inspector窗口时,我都能够得到通知,因此这似乎是一个跳入并将我的包装器对象的内部列表与 Application.Inspectors 收集并相应地添加或删除新的或孤立的包装器对象。

    2 回复  |  直到 9 年前
        1
  •  1
  •   Oliver Giesen    16 年前

    我现在发现 Inspector.CurrentItem.CreationTime 对我来说足够可靠了。

        2
  •  0
  •   JimmyPena Alex K.    14 年前

    运算符查看两个对象引用是否引用同一对象。

    前任:

    Debug.Print InspectorObj1 Is InspectorObj2
    

    符合事实的

    推荐文章