VSTO Outlook 2013 加载项退出

VSTO Outlook 2013 Addin Quit

我有一个 VSTO 插件,它显示一个对话框,其中包含“是”、“否”和“取消”按钮。我希望表格随时关闭,取消或单击 X。我还希望应用程序在关闭表单时退出。这是我的代码:

        var frm = new Form1();
        DialogResult res = frm.ShowDialog();

        if (client != null)
        {
            if (res == DialogResult.Yes)
            {
                path = DRIVE_LETTER + ":/Clients/" + client + "/Correspondence/";
            }
            else if (res == DialogResult.No)
            {
                path = DRIVE_LETTER + ":/Clients Project History/" + client + "/Correspondence/";
            }
            else if (res == DialogResult.Cancel)
            {
                frm.Close();
            }
            else
            {
                frm.Close();
            }

然后是我的表单关闭事件处理程序:

    private void Form1_Closing(object sender, CancelEventArgs e)
    {
        Application.Exit();
    }

但是好像不行。 Microsoft.Office.Interop.Outlook.Application 没有退出方法。我怎样才能在 VSTO 中做同样的事情?当这些表单为 canceled/closed.

时,我希望我的应用程序完全停止执行

谢谢

编辑:任何人都可以提供退出插件的示例。或者在满足特定条件时停止所有执行,例如 Pyton 的 sys.exit()。我不想关闭 outlook,只希望插件停止执行。连卸都不卸,就停

如果您需要关闭 Outlook,您可以使用应用程序 class 的 Quit 方法。关联的 Outlook 会话将完全关闭;用户将从消息传递系统注销,对尚未保存的项目所做的任何更改都将被丢弃。

但是如果您需要关闭加载项(而不是主机应用程序),您可以:

  1. 禁用所有事件处理程序和 UI 控件。要完成工作,您可以检查全局布尔变量,它可以指示加载项的状态(允许 运行 或不允许)。
  2. ComAddIn class 的 Connect 属性 允许设置指定 COMAddIn 对象的连接状态。如果加载项处于活动状态,则 属性 returns 为真;如果加载项处于非活动状态,它 returns false。已注册并连接一个活动的插件;已注册非活动加载项但当前未连接。

    Outlook.Application outlook = new Outlook.Application();
    
    if (outlook.Application.COMAddIns.Item("OutlookAddIn").Connect)
    {
        outlook.Application.COMAddIns.Item("OutlookAddIn").Connect = false;
    }
    else
    {
        outlook.Application.COMAddIns.Item("OutlookAddIn").Connect = true;
    }