Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 197
  • Trackbacks - 5

 

VSTO-Outlook issues

Da qualche giorno sto cercando di sviluppare soluzioni "managed" integrate in Outlook 2003.

Lo strumento che ci fornisce Microsoft è il Visual Studio Tool For Office, il quale ci permette di creare facilmente add-in per Outlook, oltre che i più reclamizzati Smart Document per Word ed Excel.
Lo strumento è ottimo e tramite i wrapper .Net possiamo accedere facilmente e con estrema potenza e flessibilità a tutto l'object model di Outlook.

Tutta questa potenza si è dovuta arrendere di fronte ad un problema di cui non sono riuscito a trovare documentazione e che vorrei descrivere dal momento che potrebbe interessare la maggior parte degli add-in.

Ogni add-in che si rispetti dovrà prevedere un menu che si installi nel menu principale di Outlook e che a sua volta contenga dei sottomenu che attivino le varie funzionalità dell' add-in.
La creazione di tale menu richiede solo poche righe di codice e l'utilizzo degli oggetti nel namespace Microsoft.Office.Core.
Per ogni sottomenu creato possiamo inoltre agganciarci all'evento Click per gestirne la relativa funzionalità.

Il problema riscontrato è che un menu di questo tipo gestisce gli eventi di click sui sottomenu solo la prima volta che vengono "cliccati".Successivamente, ogni selezione dei sottomenu non scatena nessun evento di click all'interno del nostro add-in, di fatto rendendolo inutilizzabile.

Girovagando in rete ed anche sul forum/newsgroup di Microsoft non ho trovato nessuna risposta e/o soluzione al problema.

La soluzione l'ho ottenuta scaricando un esempio di integrazione di Microsoft, il quale utilizza una libreria helper per Outlook che contiene una serie di wrapper aggiuntivi per la gestione dei menu.
Dalla documentazione nel codice il problema sembra sia dovuto alla presenza di WordMail:

  //When using WordMail, the events fired by toolbar and menu items arrive on a background thread
 
//CommandBarManager uses a ISynchronizeInvoke object (a control, set in the constructor)
 
//to dynamically invoke any toolbar or menu events on the correct thread

Attraverso tale libreria, che tra l'altro fornisce altre classi per sviluppi più avanzati all'interno dell'explorer di Outlook,
il problema è stato risolto, ma trovo comunque strano il "silenzio" della rete su una tale anomalia.

Comments have been closed on this topic.
 

 

Copyright © Luca Mauri