阅读窗格和撰写上的 Outlook VSTO 自定义任务窗格 window?

Outlook VSTO Custom task pane on Reading Pane & Compose window?

我正在尝试遵循并结合 Microsoft 的 2 个示例项目:

https://docs.microsoft.com/en-us/visualstudio/vsto/walkthrough-synchronizing-a-custom-task-pane-with-a-ribbon-button?view=vs-2019

https://docs.microsoft.com/en-us/visualstudio/vsto/walkthrough-displaying-custom-task-panes-with-e-mail-messages-in-outlook?view=vs-2019

我想在主 outlook 上有一个自定义选项卡 window(阅读窗格)(资源管理器?),它可以工作。我想要一个任务窗格,其中包含修改当前回复/转发电子邮件的按钮。我还希望当有人双击一封电子邮件弹出撰写 window.

时可用

通过弹出窗口撰写时一切都很好 window。但在浏览主 Outlook 阅读窗格(资源管理器??)时失败。

这是我在主 outlook 上尝试显示/隐藏任务窗格时收到的错误 window。

System.InvalidCastException: 'Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Outlook.Inspector'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063005-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).'

这是导致异常的行

Outlook.Inspector inspector = (Outlook.Inspector)e.Control.Context;

您需要将 e.Control.Context 转换为 Outlook.Explorer。此外,您可能想使用“as”运算符 - 它不会引发异常,您可以检查 return 值是否为空:

Outlook.Explorer explorer = e.Control.Context as Outlook.Explorer;
if (explorer != null)
{
    ...
}