IAgentCommands

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

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

Получите интерфейс IAgentCommands , запросив интерфейс IAgentCharacter для IAgentCommands. Каждое клиентское приложение Агента Майкрософт может определить коллекцию команд, называемую коллекцией Commands . Чтобы добавить command в коллекцию, используйте метод Add или Insert . Хотя свойства команды можно указать с помощью методов IAgentCommand , для оптимальной производительности кода укажите все свойства command в методах IAgentCommands::Add или IAgentCommands::Insert при первоначальной настройке свойств для новой команды. Для запроса или изменения параметров свойств можно использовать методы IAgentCommand .

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

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

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

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

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

IAgentCommands определяет интерфейс, позволяющий приложениям добавлять, удалять, задавать и запрашивать свойства для коллекции Commands . Эти функции также доступны в IAgentCommandsEx.

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

Свойство Caption Свойство Voice-Caption Свойство voice Свойство Visible Отображается во всплывающем меню символа Отображается в окне "Голосовые команды"
Да Да Да True Да, использование заголовка Да, с помощью VoiceCaption
Да Да No¹ True Да, использование заголовка Нет
Да Да Да Неверно Нет Да, с помощью VoiceCaption
Да Да No¹ False Нет Нет
No¹ Да Да True нет Да, с помощью VoiceCaption
No¹ Да Да Неверно Нет Да, с помощью VoiceCaption
No¹ Да No¹ True нет Нет
No¹ Да No¹ False Нет Нет
Да No¹ Да True Да, использование заголовка Да, использование заголовка
Да No¹ No¹ True Да Нет
Да No¹ Да Неверно Нет Да, использование заголовка
Да No¹ No¹ False Нет Нет
No¹ No¹ Да True нет No²
No¹ No¹ Да Неверно Нет No²
No¹ No¹ No¹ True нет Нет
No¹ No¹ No¹ False Нет Нет

 

¹Если свойство имеет значение NULL. В некоторых языках программирования пустая строка может не интерпретироваться так же, как пустая строка.

² Эта команда по-прежнему доступна для голосовых функций.

Методы в порядке таблицы Vtable

Методы IAgentCommands Описание
GetCommand Извлекает объект Command из коллекции Commands .
GetCount Возвращает значение числа команд в коллекции Commands .
SetCaption Задает значение свойства Caption для коллекции Commands .
GetCaption Возвращает значение свойства Caption коллекции Commands .
SetVoice Задает значение свойства Voice для коллекции Commands .
GetVoice Возвращает значение свойства Voice коллекции Commands .
SetVisible Задает значение свойства Visible для коллекции Commands .
GetVisible Возвращает значение свойства Visible коллекции Commands .
Добавить Добавляет объект Command в коллекцию Commands .
Вставить Вставляет объект Command в коллекцию Commands .
Удалить Удаляет объект Command из коллекции Commands .
Removeall Удаляет все объекты Command из коллекции Commands .