2014-10-22 77 views
2

我有一個使用VSTO的Outlook 2013中的電子郵件自定義窗格。它列出在一個ListView附件,並允許對附件進行轉換操作:如何顯示指定附件的Outlook電子郵件附件預覽

enter image description here

用戶可以通常按上的附接來獲得所選附件的預覽窗格。我需要在我的 ListView中選擇匹配的附件時複製該預覽操作。這將允許他們選擇一個附件,查看預覽,然後選擇文檔類型(ID文檔,簡歷等),而不必在我的自定義面板和通常的附件列表之間來回移動。

我已經谷歌搜索各種術語,但這似乎太晦澀難以找到。我希望有一個Outlook 2013 VSTO專家能夠知道從哪裏開始。 Inspector.AttachmentSelection是一個起點,但這是只讀

我的C#的選擇更改處理如下所示(所有錯誤檢查刪除簡化它):

private void listview_SelectedIndexChanged(object(sender, EventArgs e) 
{ 
    ListView listView = sender as ListView; 
    ListViewItem listViewItem = listView.SelectedItems[0]; 
    Attachment attachment = lvi.Tag as Attachment; 
    Inspector inspector = Globals.ThisAddIn.Application.ActiveInspector(); 

    // How to preview the attachment in the inspector??? 
} 

更新:

作爲備用,我可以走另一條路,通過如下所示捕獲Inspector.AttachmentSelectionChange事件並選擇我的ListView中的項目,但我希望能夠從我的ListView中選擇附件並導致AttachmentSelection更改:

void inspector_AttachmentSelectionChange() 
    { 
     this.attachmentListView.SelectedItems.Clear(); 
     foreach (Attachment selection in this.Inspector.AttachmentSelection) 
     { 
      foreach (ListViewItem item in this.attachmentListView.Items) 
      { 
       if (item.Tag as Attachment == selection) 
       { 
        item.Selected = true; 
       } 
      } 
     } 
    } 

回答

0

不幸的是,Outlook對象模型(或Redemption)中沒有任何內容允許您設置選定的附件。

但是,可以使用一些Win32API命令選擇它以將焦點設置在附件選擇器區域上。如果你使用Spy ++,你可以看到它有一個特定的窗口句柄(0007096E; AfxWndW)。當該窗口被激活時,您可以發出TAB鍵盤命令來選擇一個附件。我不確定如何激活特定的附件; TAB似乎是該窗口中唯一使用的鍵盤命令。

+0

儘管我在自動化Windows消息方面有相當多的經驗,爲了模擬交互,「特定」窗口句柄並不是特定的,類名「AfxWndW」在Outlook中的其他控件中很常見。不管怎麼說,還是要謝謝你。 – 2014-10-22 15:17:28

+0

我敢肯定,你可以從Outlook中的一些已知窗口句柄中瀏覽窗口堆棧,以訪問該特定的子窗口 - 我之前已經完成了向「SuperGrid」發出擊鍵。 – 2014-10-22 19:39:01