IAgentCommands

[Microsoft 에이전트는 Windows 7을 기준으로 더 이상 사용되지 않으며 이후 버전의 Windows에서는 사용할 수 없습니다.]

Microsoft 에이전트 서버는 사용자가 현재 사용할 수 있는 명령 목록을 유지 관리합니다. 이 목록에는 숨기기 및 Microsoft 에이전트 속성, 사용 가능한(입력이 아닌) 클라이언트 목록 및 현재 활성 클라이언트에서 정의한 명령과 같은 일반적인 상호 작용을 위해 서버가 정의하는 명령이 포함됩니다. 처음 두 명령 집합은 전역 명령입니다. 즉, 입력 활성 클라이언트에 관계없이 언제든지 사용할 수 있습니다. 클라이언트 정의 명령은 해당 클라이언트가 입력 활성인 경우에만 사용할 수 있습니다.

IAgentCommands에 대한 IAgentCharacter 인터페이스를 쿼리하여 IAgentCommands 인터페이스를 검색합니다. 각 Microsoft 에이전트 클라이언트 애플리케이션은 Commands 컬렉션이라는 명령 컬렉션을 정의할 수 있습니다. 컬렉션에 명령을 추가하려면 Add 또는 Insert 메서드를 사용합니다. IAgentCommand 메서드를 사용하여 명령의 속성을 지정할 수 있지만 최적의 코드 성능을 위해 처음에 새 Command의 속성을 설정할 때 IAgentCommands::Add 또는 IAgentCommands::Insert 메서드에서 명령의 모든 속성을 지정합니다. IAgentCommand 메서드를 사용하여 속성 설정을 쿼리하거나 변경할 수 있습니다.

Commands 컬렉션의 각 명령에 대해 명령이 문자의 팝업 메뉴, 음성 명령 창, 둘 다 또는 둘 다에 표시되는지 여부를 확인할 수 있습니다. 예를 들어 명령이 문자의 팝업 메뉴에 표시되도록 하려면 명령의 CaptionVisible 속성을 설정합니다. 음성 명령 창에 명령을 표시하려면 명령의 캡션음성 속성을 설정합니다.

사용자는 클라이언트 애플리케이션이 입력 활성이고 문자가 표시되는 경우에만 Commands 컬렉션의 개별 명령에 액세스할 수 있습니다. 따라서 일반적으로 Commands 컬렉션 개체 및 컬렉션의 명령에 대한 Caption, VoiceCaptionVoice 속성을 설정하려고 합니다. 이 속성은 캐릭터의 팝업 메뉴와 음성 명령 창에 Commands 컬렉션에 대한 항목을 배치하기 때문입니다. 사용자가 명령 항목을 선택하여 클라이언트로 전환하면 서버는 자동으로 클라이언트 입력을 활성화하고 IAgentNotifySink::ActivateInputState 를 사용하여 클라이언트 애플리케이션에 알리고 컬렉션의 명령을 사용할 수 있게 합니다. 또한 서버는 IAgentNotifySink::ActivateInputState 이벤트를 사용하여 더 이상 입력 활성이 아닌 클라이언트에 알린다. 이렇게 하면 서버가 현재 입력 활성 클라이언트의 컨텍스트에 적용되는 명령 만 표시하고 수락할 수 있습니다. 또한 클라이언트 간의 명령 이름 충돌을 방지하는 역할을 합니다.

또한 클라이언트는 IAgentCharacter::Activate 메서드를 사용하여 입력 활성 클라이언트를 만들도록 명시적으로 요청할 수도 있습니다. 또한 이 메서드는 애플리케이션을 입력 활성 클라이언트가 아닌 것으로 설정하는 것도 지원합니다. 다른 애플리케이션과 문자를 공유할 때 이 메서드를 사용하여 애플리케이션 창이 포커스를 받을 때 애플리케이션이 입력 활성으로 설정되고 포커스가 손실될 때 입력이 활성화되지 않도록 설정할 수 있습니다.

마찬가지로 IAgentCharacter::Activate 를 사용하여 애플리케이션을 문자의 활성 클라이언트로 설정할 수 있습니다. 활성 클라이언트는 해당 문자가 최상위 문자일 때 입력을 받는 클라이언트입니다. 이 상태 변경되면 서버는 IAgentNotifySinkEx::ActiveClientChange 이벤트를 사용하여 애플리케이션에 알린다.

캐릭터의 팝업 메뉴가 표시되면 사용자가 메뉴를 다시 표시할 때까지 Commands 컬렉션의 속성이나 컬렉션의 명령이 변경되지 않습니다. 그러나 열면 음성 명령 창에 변경 내용이 표시됩니다.

IAgentCommands 는 애플리케이션이 Commands 컬렉션에 대한 속성을 추가, 제거, 설정 및 쿼리할 수 있는 인터페이스를 정의합니다. 이러한 함수는 IAgentCommandsEx에서도 사용할 수 있습니다.

Commands 컬렉션은 팝업 메뉴와 문자의 음성 명령 창 모두에서 명령으로 표시할 수 있습니다. Commands 컬렉션을 표시하려면 해당 Caption 속성을 설정해야 합니다. 다음 표에서는 Commands 컬렉션의 속성이 프레젠테이션에 미치는 영향을 요약합니다.

Caption 속성 Voice-Caption 속성 Voice 속성 Visible 속성 문자의 팝업 메뉴에 나타납니다. 음성 명령 창에 표시
Yes Yes Yes True 예, 캡션 사용 예, VoiceCaption 사용
Yes Yes No 5 True 예, 캡션 사용 아니요
Yes False 예, VoiceCaption 사용
Yes Yes No 5 False 아니요
No 5 Yes Yes True 아니요 예, VoiceCaption 사용
No 5 Yes False 예, VoiceCaption 사용
No 5 Yes No 5 True 아니요 아니요
No 5 Yes No 5 False 아니요
No 5 Yes True 예, 캡션 사용 예, 캡션 사용
Yes No 5 No 5 True 아니요
No False 예, 캡션 사용
Yes No No False 아니요
No No Yes True 아니요 No²
No No False No²
No No No True 아니요 아니요
No No No False 아니요

 

요 속성 설정이 null이면 일부 프로그래밍 언어에서는 빈 문자열이 null 문자열과 동일하게 해석되지 않을 수 있습니다.

²명령은 여전히 음성으로 액세스할 수 있습니다.

Vtable 순서의 메서드

IAgentCommands 메서드 설명
GetCommand Commands 컬렉션에서 Command 개체를 검색합니다.
GetCount Commands 컬렉션의 Commands 수 값을 반환합니다.
SetCaption Commands 컬렉션의 Caption 속성 값을 설정합니다.
GetCaption Commands 컬렉션의 Caption 속성 값을 반환합니다.
SetVoice Commands 컬렉션의 Voice 속성 값을 설정합니다.
GetVoice Commands 컬렉션의 Voice 속성 값을 반환합니다.
SetVisible Commands 컬렉션의 Visible 속성 값을 설정합니다.
GetVisible Commands 컬렉션의 Visible 속성 값을 반환합니다.
추가 Commands 컬렉션에 Command 개체를 추가합니다.
삽입 Commands 컬렉션에 Command 개체를 삽입합니다.
제거 Commands 컬렉션에서 Command 개체를 제거합니다.
Removeall Commands 컬렉션에서 모든 Command 개체를 제거합니다.