Atm*_*ons 6 c# office-2007 visual-studio-2008 outlook-addin
有人知道如何在Outlook 2007中以编程方式启用/禁用外出自动响应程序的实际状态吗?
已经在VS 2008中搜索了对象浏览器并找到了枚举Microsoft.Office.Interop.Outlook.OlBusyStatus但我没有找到任何类或其他任何使用它的内容.
任何想法都表示赞赏,感谢和问候
更新:使用改编自这篇博文的示例代码更新了下面的代码,该代码在更广泛的 Outlook 安装中(例如同时使用 Exchange 和 PST 或访问多个 Exchange 邮箱的 Outlook 安装)会更好地工作。
以下代码适用于 Outlook 2007,用于从外部(到 Outlook)EXE 设置 OOF 状态:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
确保您没有以管理员身份运行该代码,也没有以非管理员身份运行 Outlook,否则您可能会在 Vista 上收到与安全相关的错误。
请注意,它将在 Outlook 中弹出安全对话框,以确保用户同意您访问 Outlook 对象模型。当从外部 EXE 访问 Outlook 对象模型时,这是正常的。
但是,如果您从加载项访问对象模型,则上面的代码并不完全正确:您需要获取对受信任 Outlook 的引用,而不是通过构造函数创建新的 Outlook.Application 对象加载项内部的 .Application 对象,如下所示:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句, MSDN有一篇关于加载项安全性的好文章,如果您遇到安全对话框或错误,该文章可能会很有用。
| 归档时间: |
|
| 查看次数: |
2533 次 |
| 最近记录: |