IAgentCommands
[Microsoft 에이전트는 Windows 7을 기준으로 더 이상 사용되지 않으며 이후 버전의 Windows에서는 사용할 수 없습니다.]
Microsoft 에이전트 서버는 사용자가 현재 사용할 수 있는 명령 목록을 유지 관리합니다. 이 목록에는 숨기기 및 Microsoft 에이전트 속성, 사용 가능한(입력이 아닌) 클라이언트 목록 및 현재 활성 클라이언트에서 정의한 명령과 같은 일반적인 상호 작용을 위해 서버가 정의하는 명령이 포함됩니다. 처음 두 명령 집합은 전역 명령입니다. 즉, 입력 활성 클라이언트에 관계없이 언제든지 사용할 수 있습니다. 클라이언트 정의 명령은 해당 클라이언트가 입력 활성인 경우에만 사용할 수 있습니다.
IAgentCommands에 대한 IAgentCharacter 인터페이스를 쿼리하여 IAgentCommands 인터페이스를 검색합니다. 각 Microsoft 에이전트 클라이언트 애플리케이션은 Commands 컬렉션이라는 명령 컬렉션을 정의할 수 있습니다. 컬렉션에 명령을 추가하려면 Add 또는 Insert 메서드를 사용합니다. IAgentCommand 메서드를 사용하여 명령의 속성을 지정할 수 있지만 최적의 코드 성능을 위해 처음에 새 Command의 속성을 설정할 때 IAgentCommands::Add 또는 IAgentCommands::Insert 메서드에서 명령의 모든 속성을 지정합니다. IAgentCommand 메서드를 사용하여 속성 설정을 쿼리하거나 변경할 수 있습니다.
Commands 컬렉션의 각 명령에 대해 명령이 문자의 팝업 메뉴, 음성 명령 창, 둘 다 또는 둘 다에 표시되는지 여부를 확인할 수 있습니다. 예를 들어 명령이 문자의 팝업 메뉴에 표시되도록 하려면 명령의 Caption 및 Visible 속성을 설정합니다. 음성 명령 창에 명령을 표시하려면 명령의 캡션 및 음성 속성을 설정합니다.
사용자는 클라이언트 애플리케이션이 입력 활성이고 문자가 표시되는 경우에만 Commands 컬렉션의 개별 명령에 액세스할 수 있습니다. 따라서 일반적으로 Commands 컬렉션 개체 및 컬렉션의 명령에 대한 Caption, VoiceCaption 및 Voice 속성을 설정하려고 합니다. 이 속성은 캐릭터의 팝업 메뉴와 음성 명령 창에 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 개체를 제거합니다. |