Commands 集合对象

[Microsoft 代理从 Windows 7 开始已弃用,可能在后续版本的 Windows 中不可用。]

Microsoft 代理服务器维护用户当前可用的命令列表。 此列表包括服务器为常规交互 (定义的命令,例如隐藏和打开语音命令窗口) 、可用 (但非输入活动) 客户端的列表,以及当前活动客户端定义的命令。 前两组命令是全局命令:也就是说,无论输入活动客户端如何,它们都随时可用。 客户端定义的命令仅在该客户端为输入-主动且字符可见时才可用。

每个客户端应用程序都可以定义一个名为 Commands 集合的命令 集合。 若要将命令添加到集合,请使用 AddInsert 方法。 尽管可以使用单独的语句指定命令的属性,但为了获得最佳代码性能,请在 AddInsert 方法语句中指定命令的所有属性。 对于集合中的每个命令,你可以确定用户对命令的访问权限是出现在字符的弹出菜单中、“语音命令窗口”中、在两者中,还是不显示在这两者中。 例如,如果希望命令显示在字符的弹出菜单上,请设置命令的 CaptionVisible 属性。 若要在“语音命令”窗口中显示命令,请设置命令的 VoiceCaptionVoice 属性。

仅当客户端应用程序处于输入-活动状态时,用户才能访问集合中的单个 comm命令和。 因此,在与其他客户端应用程序共享字符时,通常需要为 Commands 集合对象以及集合中的命令设置 CaptionVoiceCaptionVoice 属性。 这会在角色的弹出菜单和语音命令窗口中放置 命令 集合的条目。

当用户通过选择其 Commands 条目切换到客户端时,服务器会自动使客户端输入处于活动状态,使用 ActivateInput 事件通知客户端应用程序,并使集合中的命令可用。 服务器还会通知客户端,它不再使用 DeActivateInput 事件进行输入-活动。 这使服务器能够仅显示并接受应用于当前输入活动客户端上下文的命令。 它还有助于避免客户端之间的命令名称冲突。

客户端还可以使用 Activate 方法显式请求自己成为输入-主动客户端。 此方法还支持将应用程序设置为不是输入-主动客户端。 在与其他应用程序共享字符时,可能需要使用此方法,将应用程序设置为在应用程序窗口获得焦点时为输入主动,当应用程序窗口失去焦点时不输入主动。

同样,可以使用 Activate 方法将应用程序设置为 (或不) 字符的活动客户端。 活动客户端是当其字符为最顶层字符时接收输入的客户端。 当此状态更改时,服务器会使用 ActiveClientChange 事件通知应用程序。

当角色的弹出菜单显示时,在用户重新显示菜单之前,不会显示对 Commands 集合的属性或其集合中命令的更改。 但是,“命令”窗口确实在发生更改时显示更改。