簡體   English   中英

VSTO C#-Outlook外接程序-.AttachmentSelections對象之間的區別

[英]VSTO C# - Outlook Addin - How to differ between .AttachmentSelections objects

Visual Studio(C#)中的Outlook 2010加載項。

我試圖找到一種方法來分辨從資源管理器中檢索的.AttachmentSelection(僅在收件箱中預覽郵件項目時)和從檢查器中檢索的.AttachmentSelection(當雙擊並在單獨的窗口中實際打開郵件時)之間的區別,在Outlook中右鍵單擊附件本身時

我正在嘗試做類似的事情:

public void ButtonClick(Office.IRibbonControl control)
{
    //right clicked attachment item -> context menu
    if (control.Context is Outlook.AttachmentSelection)
    {
        if (control.Context is Outlook.Inspector)
            MessageBox.Show("inspector");
        else if (control.Context is Outlook.Explorer)
            MessageBox.Show("explorer");
     }
}

但是,一旦第一個“ if”有效,內部的兩個都將失敗。 因為上下文不是Outlook Inspector也不是Outlook Explorer。 Microsoft的示例和說明不是很有幫助,因為在其代碼段中,他們只是在附件中顯示了附件,而沒有進一步驗證其來源(explorer \\ inspector)。

我需要抓住Mailitem,用戶從中右鍵單擊附件,然后從中提取信息,而不是直接處理附件。

任何想法 ? 任何人 ?

您可以使用Application類的ActiveWindow方法來確定是從“資源管理器”窗口還是“檢查器”窗口中打開了附件。 該方法返回一個代表桌面上當前Microsoft Outlook窗口的對象,即Explorer或Inspector對象。 如果沒有打開Outlook資源管理器或檢查器,則不返回任何內容。

另外,您可能會發現Outlook項目的BeforeAttachmentPreview事件很有幫助。 在預覽與父對象的實例關聯的附件之前將其觸發。 也就是說,從活動瀏覽器的閱讀窗格中的附件欄或活動檢查器中預覽附件之前會觸發該事件。 請注意,您可以取消操作。 您只需要將cancel參數設置為true。

怎么樣? 直接從msdn

Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
if (mailItem != null)
      {
          if (mailItem.EntryID == null)
          {
              mailItem.Subject = "This text was added by using code";
              mailItem.Body = "This text was added by using code";
          }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM