UPDATE: aggiornato il codice di seguito utilizzando il codice di esempio adattato da this blog post che funzionerà meglio in una più ampia varietà di impianti Outlook (ad esempio quelli utilizzando sia Exchange e PST o accedere più cassette postali di Exchange).
Ecco il codice che ha lavorato per me su Outlook 2007, per impostare lo stato Fuori sede da un esterno (per Outlook) EXE:
Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.ApplicationClass();
Microsoft.Office.Interop.Outlook.NameSpace ns = app.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
{
store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
break;
}
}
Assicurarsi che non sta eseguendo che il codice come amministratore e Outlook come non amministratore - altrimenti potresti avere un errore relativo alla sicurezza su Vista.
Si noti che verrà visualizzata una finestra di dialogo di sicurezza all'interno di Outlook per garantire all'utente di accedere correttamente al modello di oggetti di Outlook. Questo è normale quando si accede al modello di oggetti di Outlook da un EXE esterno.
Se, tuttavia, si accede al modello di oggetto da un componente aggiuntivo, il codice riportato sopra non è completamente corretto: invece di creare un nuovo oggetto Outlook.Application tramite il costruttore, è necessario ottenere un riferimento all'oggetto Outlook.Application di fiducia da dentro il componente aggiuntivo, in questo modo:
Microsoft.Office.Interop.Outlook.NameSpace ns = this.Application.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
{
store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
break;
}
}
a proposito, c'è un buon MSDN article sulla sicurezza per i componenti aggiuntivi, che possono essere utili se si esegue in finestre di dialogo di sicurezza o errori.
fonte
2009-11-07 18:47:43
'OlBusyStatus' è per' AppointmentItem.BusyStatus'. –