IMsgServiceAdmin::CreateMsgService

适用于:Outlook 2013 | Outlook 2016

已弃用:建议使用 IMsgServiceAdmin2::CreateMsgServiceEx 。 将消息服务添加到当前配置文件。

HRESULT CreateMsgService(
  LPSTR lpszService,
  LPSTR lpszDisplayName,
  ULONG_PTR ulUIParam,
  ULONG ulFlags    
);

参数

lpszService

[in]指向要添加的消息服务名称的指针。 此消息服务名称必须出现在 MapiSvc.inf 文件的 [Services] 部分中。

lpszDisplayName

[in]指向要添加的消息服务的显示名称的指针。 如果消息服务在 MapiSvc.inf 文件中设置了 PR_DISPLAY_NAME (PidTagDisplayName) 属性,则忽略 lpszDisplayName 参数。

ulUIParam

[in]此方法显示的任何对话框或窗口的父窗口的句柄。

ulFlags

[in]控制消息服务的安装方式的标志的位掩码。 可以设置以下标志:

MAPI_UNICODE

lpszService 和 lpszDisplayName 参数应转换为 LPWSTR 并解释为 Unicode 字符串。

SERVICE_NO_RESTART_WARNING

向配置文件添加新邮件服务时,MAPI 子系统通常根据各种情况和条件确定此操作需要重启 Outlook。 如果不包括SERVICE_NO_RESTART_WARNING标志,并且基于SERVICE_UI_ALWAYS和SERVICE_UI_ALLOWED标志允许 UI,并且至少有一个进程登录到当前配置文件,则此函数将显示消息“您必须重启 Outlook 才能使这些更改生效。包含SERVICE_NO_RESTART_WARNING标志将禁止显示该警告消息。

SERVICE_UI_ALLOWED

如果需要,允许使用消息服务配置 UI。

SERVICE_UI_ALWAYS

消息服务显示其配置属性表。

返回值

S_OK

调用成功,并返回了预期的值。

MAPI_E_NOT_FOUND

邮件服务名称不在 MapiSvc.inf 的 [Services] 部分中。

备注

IMsgServiceAdmin::CreateMsgService 方法将消息服务添加到当前配置文件。 CreateMsgService 调用消息服务的入口点函数来执行任何特定于服务的配置任务。 如果在 ulFlags 参数中设置了SERVICE_UI_ALLOWED标志,则安装的消息服务可以显示属性表,使用户能够配置其设置。

MapiSvc.inf 文件包含构成消息服务的提供程序列表以及每个提供程序的属性。 CreateMsgService 首先为消息服务创建新的配置文件部分,然后将该服务的所有信息从 MapiSvc.inf 文件复制到配置文件中,为每个提供程序创建新节。

从 MapiSvc.inf 复制所有信息后,使用 ulContext 参数中设置的 MSG_SERVICE_CREATE 值调用消息服务的入口点函数。 如果在 CreateMsgService 方法的 ulFlags 参数中设置了 SERVICE_UI_ALLOWED 标志,则调用消息服务的入口点函数时,也会传递 ulUIParamulFlags 参数中的值。 服务提供商应显示其配置属性表,以便用户可以配置消息服务。

给调用方的说明

CreateMsgService 不会返回已添加到配置文件的消息服务的 MAPIUID 结构。

若要检索所创建消息服务的 MAPIUID ,请使用以下过程:

  1. 调用 IMsgServiceAdmin::GetMsgServiceTable 方法以获取消息服务管理表。

  2. 通过对与PR_SERVICE_NAME (PidTagServiceName) 属性与消息服务名称匹配的表施加限制,找到表示消息服务的行。

  3. 检索服务的 PR_SERVICE_UID (PidTagServiceUid) 属性。

  4. lpUid 参数中 PR_SERVICE_UID 属性的值传递给 IMsgServiceAdmin::ConfigureMsgService 方法以配置服务。

警告

MAPI 子系统的Microsoft Outlook 2010实现不支持MAPI_UNICODE,如果使用它将失败。

重要

ulFlags SERVICE_NO_RESTART_WARNING 可能未在当前具有的可下载头文件中定义,在这种情况下,可以使用以下值将其添加到代码中:#define SERVICE_NO_RESTART_WARNING 0x00000080

MFCMAPI 引用

有关 MFCMAPI 示例代码,请参阅下表。

文件 函数 Comment
MAPIProfileFunctions.cpp
HrAddServiceToProfile
MFCMAPI 使用 IMsgServiceAdmin::CreateMsgService 方法将服务添加到配置文件。

另请参阅

IMsgServiceAdmin:IUnknownMFCMAPI 作为代码示例