Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Office 2007:以编程方式控制外出助手?_C#_Visual Studio 2008_Office 2007_Outlook Addin - Fatal编程技术网

C# Office 2007:以编程方式控制外出助手?

C# Office 2007:以编程方式控制外出助手?,c#,visual-studio-2008,office-2007,outlook-addin,C#,Visual Studio 2008,Office 2007,Outlook Addin,有人知道如何在Outlook 2007中以编程方式启用/禁用外出自动响应程序的实际状态吗 已经在VS 2008中搜索了对象浏览器,并找到了枚举Microsoft.Office.Interop.Outlook.OlBusyStatus,但我没有找到任何类或任何其他使用它的对象 感谢并问候您的任何想法更新:使用经过改编的示例代码更新了下面的代码,该示例代码将在更广泛的Outlook安装中更好地工作(例如,同时使用Exchange和PST或访问多个Exchange邮箱的安装)。 下面是我在Outloo

有人知道如何在Outlook 2007中以编程方式启用/禁用外出自动响应程序的实际状态吗

已经在VS 2008中搜索了对象浏览器,并找到了枚举
Microsoft.Office.Interop.Outlook.OlBusyStatus
,但我没有找到任何类或任何其他使用它的对象


感谢并问候您的任何想法更新:使用经过改编的示例代码更新了下面的代码,该示例代码将在更广泛的Outlook安装中更好地工作(例如,同时使用Exchange和PST或访问多个Exchange邮箱的安装)。

下面是我在Outlook 2007上使用的代码,用于从外部(到Outlook)EXE设置OOF状态:

请确保您不是以管理员身份运行该代码,而以非管理员身份运行outlook,否则您可能会在Vista上遇到与安全相关的错误

请注意,它将在Outlook中弹出安全对话框,以确保用户可以访问Outlook对象模型。从外部EXE访问outlook对象模型时,这是正常现象

但是,如果您是从外接程序访问对象模型,则上述代码并不完全正确:您需要从外接程序内部获取对受信任的Outlook.Application对象的引用,而不是通过构造函数创建新的Outlook.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;
    }
}

顺便说一句,外接程序有一个很好的安全性,如果遇到安全对话框或错误,这可能会很有用。

OlBusyStatus
用于
AppointmentItem。BusyStatus
。看起来不错。周一我会在办公室试试,现在已经谢谢了。酷。需要注意的一点是:我相信上面的代码显然是针对Outlook2007的,需要提供最新的CDO(我认为是1.21)。如果这是你的开发机器,那么这不是问题,但是如果你将它捆绑到一个应用程序中,安装在其他用户的桌面上,让我知道,我可以在我的答案中添加有关您需要执行的操作的更多信息。这是我收到的异常:
System.UnauthorizedAccessException未经您示例中的用户代码处理,即使我尝试
ns.Stores[1].PropertyAccessor.GetProperty(“http://schemas.microsoft.com/mapi/proptag/0x661D000B")
您是从加载项中运行的代码还是在单独的应用程序中运行的代码中获得此异常?您使用的是什么操作系统版本?请查看缺少的详细信息。我正在尝试创建一个外接程序,我在Win XP SP3上,使用MS Exchange绑定到一个域。
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;
    }
}