2009-11-05 24 views
6

Outlook 2007'de ofis dışındaki otomatik yanıtlayıcının gerçek durumunu program aracılığıyla nasıl etkinleştireceğini/devre dışı bırakacağını bilen var mı?Office 2007: Office dışı asistanı program aracılığıyla denetleme?

Zaten VS 2008'de nesne tarayıcısını aradı ve numaralandırma Microsoft.Office.Interop.Outlook.OlBusyStatus'u buldu ancak bunu kullanarak herhangi bir sınıf veya başka bir şey bulamadım.

herhangi bir fikir takdir

, teşekkür ve saygılarımla

+0

"OlBusyStatus", "AppointmentItem.BusyStatus" içindir. –

cevap

3

GÜNCELLEME: Güncelleme Exchange ve PST ikisini de kullanarak veya erişen (Outlook yüklemeleri daha çeşitli daha iyi örneğin olanları çalışacak this blog post uyarlanan örnek kodu kullanarak aşağıdaki kodu çoklu Exchange posta kutuları). Eğer yönetici ve bakış olduğunca bu kodu çalışmadığından emin olun

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; 
    } 
} 

:

İşte harici (Outlook) EXE OOF durumunu ayarlamak için, Outlook 2007 tarihinde benim için çalıştı kod Yönetici olmayan - aksi takdirde Vista'da güvenlikle ilgili bir hata alabilirsiniz.

Outlook nesnesinin modeline erişebilmeniz için kullanıcının Outlook'ta güvenlik iletişim pencereleri açacağını unutmayın. Outlook nesne modeline harici bir EXE'den erişildiğinde bu normaldir.

Ancak, nesne modeline bir eklentiden erişiyorsanız, yukarıdaki kod tam olarak doğru değildir: kurucu aracılığıyla yeni bir Outlook.Application nesnesi oluşturmak yerine, başvuru almanız gerekir. eklentiniz, böyle içerden güvenilen Outlook.Application nesnesine: BTW

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; 
    } 
} 

, güvenlik diyaloglar veya hataları girmek yararlı olabilir eklentiler, güvenliği üzerinde iyi MSDN article var.

+0

iyi görünüyor. Pazartesi günü ofiste çalışacağız, şimdiden teşekkürler. – Atmocreations

+0

havalı. Dikkat edilmesi gereken bir uyarı: Yukarıdaki kodun görünüşe göre Outlook 2007'ye özgü olduğunu ve en son CDO'nun (1.21 Bence) bulunmasını gerektirdiğine inanıyorum. Bu sizin dev makinenizse, bu bir sorun değil, ancak bunu diğer kullanıcıların masaüstlerine yüklenecek bir uygulamaya dahil ediyorsanız, bana bildirin ve ne yapacağınız konusunda cevabıma daha fazla bilgi ekleyebilirim yapma ihtiyacı. –

+0

Aldığım özel durum budur: 'System.UnauthorizedAccessException örneğinizdeki kullanıcı kodu tarafından işlenmemişti ve ben de 'ns.Stores [1] .PropertyAccessor.GetProperty (" http://schemas.microsoft. " com/mapi/proptag/0x661D000B ")' – Atmocreations

İlgili konular