【问题标题】:VSTO: Outlook NewInspector is not calledVSTO:未调用 Outlook NewInspector
【发布时间】:2016-11-23 16:37:23
【问题描述】:

我用这个代码...

Dim inspectors As Outlook.Inspectors = Outlook.Application.Inspectors
AddHandler inspectors.NewInspector, AddressOf Inspectors_NewInspector

...将我的自定义面板添加到网络邮件项。

但是,如果我在 windows 中使用截图工具并告诉它通过电子邮件发送 sn-p,那么即使创建了新邮件,也不会调用 NewInspector。

知道为什么不调用 NewInspector 吗?

谢谢

使用代码更新:

这是一个简单的示例代码。从外部程序(如 Word、Excel、截图工具等)发送邮件不会调用 NewInspector 事件...

Imports System.Runtime.InteropServices
Imports Microsoft.Office.Interop.Outlook
Imports Microsoft.Office.Tools
Imports Outlook = Microsoft.Office.Interop.Outlook

Public Class ThisAddIn    

    Private WithEvents _inspectors As Outlook.Inspectors

    Private Sub ThisAddIn_Startup() Handles Me.Startup
        _inspectors = Globals.ThisAddIn.Application.Inspectors
    End Sub

    Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
    End Sub

    Private Sub _inspectors_NewInspector(Inspector As Inspector) Handles _inspectors.NewInspector
        MsgBox("New inspector")
    End Sub

End Class

【问题讨论】:

    标签: outlook vsto outlook-addin


    【解决方案1】:

    NewInspector 事件不会为使用简单 MAPI 或 mailto 链接创建的检查器触发(这是设计使然)。您可以有一个计时器,定期循环遍历 Application.Inspectors 集合,以检查您的代码是否还没有处理新的检查器。

    【讨论】:

    • 感谢 Dmitry ...好吧,这一定是一个错误,因为 Microsoft 声明“每当打开新的检查器窗口时发生,无论是由于用户操作还是通过程序代码。” ......它显然没有。我使用功能区加载事件而不是计时器 :) 谢谢您的帮助。
    【解决方案2】:

    您需要在全局(类)级别声明检查器变量,以确保它不会被垃圾回收。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2014-05-10
      • 2023-04-03
      • 2016-02-09
      • 2021-12-28
      相关资源
      最近更新 更多