[从 Windows 7 开始,Microsoft代理已弃用,在后续版本的 Windows 中可能不可用。
此外,在 命令 事件通知中,当服务器打开或关闭侦听模式时,代理还会使用 ListenStart 和 ListenComplete 事件(IAgentNotifySinkEx::ListeningState)通知输入活动客户端。 但是,如果用户按下侦听模式键,并且没有匹配的语音识别引擎可用于输入活动客户端的最顶层字符,则服务器将启动侦听热键模式超时,但不会为该字符的活动客户端生成 ListenStart 事件。 如果在超时完成之前,用户在语音识别引擎支持下激活另一个字符,服务器将尝试激活语音输入并生成 ListenStart 事件。
同样,如果客户端尝试使用 Listen 方法打开侦听模式,并且没有匹配的语音识别引擎可用,则调用将失败,并且服务器不会生成 ListenStart事件。 在 Microsoft 代理控制中,Listen 方法返回 False,但调用不会引发错误。
当侦听键模式处于打开状态并且用户切换到使用其他语音识别引擎的字符时,服务器将切换到该引擎并激活该引擎并触发 ListenComplete,然后 ListenStart 事件。 如果激活的字符没有可用的语音识别引擎(因为未安装,或者没有一个与激活字符的语言 ID 设置匹配),服务器将触发以前激活的字符的 ListenComplete 事件,并在 原因 参数中传回一个值。 但是,服务器不会为不支持语音识别的客户端生成 ListenStart 或 ListenComplete 事件。
如果客户端成功调用 Listen 方法和没有语音识别引擎支持的字符在侦听模式超时完成之前变为输入活动状态,然后用户切换回原始客户端的字符,服务器将为该客户端生成 ListenStart 事件。
如果输入活动客户端通过在侦听模式下更改 SRModeID 来切换语音识别引擎,则服务器会切换到该引擎并激活该引擎,而无需重新触发 ListenStart 事件。 但是,如果指定的引擎不可用,则调用将失败(在控件中引发错误),服务器还会调用 ListenComplete 事件。