VSTO Outlook 2013 Addin Quit

时间:2015-05-27 12:59:00

标签: c# dialog vsto outlook-addin

我有一个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没有Exit方法。我怎样才能在VSTO中做同等的事情?我希望我的应用程序在取消/关闭这些表单时完全停止执行。

由于

编辑:任何人都可以提供退出插件的示例。或者如果满足某个条件就停止所有执行,比如Pyton的sys.exit()。我不希望Outlook关闭,只是停止执行的插件。甚至没有卸载,只是停下来。

1 个答案:

答案 0 :(得分:2)

如果需要关闭Outlook,可以使用Application类的Quit方法。关联的Outlook会话将完全关闭;用户将从邮件系统注销,对尚未保存的项目的任何更改都将被丢弃。

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

  1. 禁用所有事件处理程序和UI控件。要完成工作,您可以查看全局布尔变量,该变量可以指示加载项的状态(允许运行或不运行)。
  2. ComAddIn类的Connect属性允许设置指定COMAddIn对象的连接状态。如果加载项处于活动状态,则该属性返回true;如果加载项处于非活动状态,则返回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;
    }