【问题标题】:Outlook VSTO Add In - How to determine the item type when multiple windows are openOutlook VSTO 加载项 - 打开多个窗口时如何确定项目类型
【发布时间】:2016-10-11 02:55:24
【问题描述】:

我开发了一个 Outlook 插件,它在电子邮件、会议请求等主题的开头添加了一个字符串。

当用户第一次打开它时,程序会检测到屏幕上显示的“CurrentItem”。

例如,当用户开始回复电子邮件时,就会出现问题,这会告诉程序当前项目是回复。然后用户在发送回复之前开始一封新电子邮件,将当前项目设置为 mailItem。然后当他们返回他们之前开始的回复时,程序仍然认为它是一个mailItem,因此它会破坏应用程序。

我该如何解决这个问题?任何帮助将不胜感激。

这是用户首次创建回复时点击的代码(如果有帮助)。

private void ThisAddIn_InlineResponse(object Item)
    {
        if (Item != null)
        {
            Outlook.MailItem mailItem = Item as Outlook.MailItem;
        }
        TypeCheck = "inline";
    }

基本上,如果它是内联回复,我需要点击此代码,但我似乎无法在窗口初始化之外执行此操作。

【问题讨论】:

    标签: outlook vsto office-interop outlook-addin office-addins


    【解决方案1】:

    使用Application.ItemSend 事件在项目实际发送时对其进行处理。使用Class 属性(您可以动态访问它,所有 OM 对象都会公开它)来确定项目类型(例如,43 代表OlObjectClass.olMail)。

    【讨论】:

    • 您好,非常感谢您的回答,您能否给我一个示例,说明如何使用此代码来确定它是当前邮件项目还是会议项目?
    • 如果您不想动态检索 Class 属性,您可以像现在一样使用“as”运算符并检查结果变量是否为空。
    • 谢谢,我现在会尝试实现它。非常感谢帮助。在这个项目中,您的应用程序 Outlook Spy 对我非常有用。
    • 嗨,Dmitry,我仍在努力确定当前项目。您能否在这里看一下这个解释,也许可以为我指明正确的方向? stackoverflow.com/questions/37787902/…
    • 查看我对该问题的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2016-04-24
    • 1970-01-01
    • 2014-05-10
    相关资源
    最近更新 更多