Поделиться через


Объект коллекции Commands

[Microsoft Agent является нерекомендуемым начиная с Windows 7 и может быть недоступен в последующих версиях Windows.]

Сервер агента Майкрософт поддерживает список команд, которые в настоящее время доступны пользователю. Этот список включает команды, определяемые сервером для общего взаимодействия (например, Скрыть и Открыть окно голосовых команд), список доступных (но неактивных для ввода) клиентов, а также команды, определенные текущим активным клиентом. Первые два набора команд являются глобальными; то есть они доступны в любое время, независимо от клиента, активного входными данными. Определяемые клиентом команды доступны только в том случае, если этот клиент активен для ввода и символ виден.

Каждое клиентское приложение может определить коллекцию команд, называемую коллекцией Commands . Чтобы добавить команду в коллекцию, используйте метод Add или Insert . Хотя свойства команды можно указать с помощью отдельных инструкций, для оптимальной производительности кода укажите все свойства команды в инструкции Метода Add или Insert . Для каждой команды в коллекции можно определить, будет ли доступ пользователя к команде отображаться во всплывающем меню символа, в окне Голосовые команды в обоих элементах или ни в том, ни в другом. Например, если вы хотите, чтобы команда отображалась во всплывающем меню для символа, задайте для команды свойства Caption и Visible . Чтобы отобразить команду в окне Голосовые команды, задайте для нее свойства VoiceCaption и Voice .

Пользователь может получить доступ к отдельнымкомандамcomm и в вашей коллекции, только если клиентское приложение активно для ввода. Поэтому при совместном использовании символа с другими клиентскими приложениями обычно требуется задать свойства Caption, VoiceCaption и Voice для объекта коллекции Commands , а также для команд в коллекции. Это действие помещает запись для коллекции Commands во всплывающем меню символа и в окне Голосовые команды.

Когда пользователь переключается на клиент, выбрав его запись "Команды ", сервер автоматически делает клиент активным для ввода, уведомляя клиентское приложение с помощью события ActivateInput и делая команды в своей коллекции доступными. Сервер также уведомляет клиента о том, что он больше не активен для ввода с помощью события DeActivateInput . Это позволяет серверу представлять и принимать только команды, которые применяются к контексту текущего активного клиента ввода. Он также позволяет избежать конфликтов имен команд между клиентами.

Клиент также может явно запросить, чтобы сделать себя клиентом, активным входными данными, с помощью метода Activate . Этот метод также поддерживает установку приложения на то, чтобы оно не было клиентом, активным для ввода. Этот метод может потребоваться использовать при совместном использовании символа с другим приложением, при этом приложение должно быть активным для ввода, когда окно приложения получает фокус, и неактивным для ввода при потере фокуса.

Аналогичным образом можно использовать метод Activate , чтобы задать для приложения значение (или не быть) активным клиентом символа. Активный клиент — это клиент, который получает входные данные, когда его символ является самым верхним символом. При изменении этого состояния сервер уведомляет приложение о событии ActiveClientChange .

При отображении всплывающего меню символа изменения свойств коллекции Commands или команды в ней не отображаются до тех пор, пока пользователь не переиграет меню. Однако в окне "Команды" отображаются изменения по мере их изменения.