Commands 컬렉션 개체
[Microsoft 에이전트는 Windows 7을 기준으로 더 이상 사용되지 않으며 이후 버전의 Windows에서는 사용할 수 없습니다.]
Microsoft 에이전트 서버는 사용자가 현재 사용할 수 있는 명령 목록을 유지 관리합니다. 이 목록에는 서버가 일반적인 상호 작용을 위해 정의하는 명령(예: 음성 명령 창 숨기기 및 열기), 사용 가능한(입력이 아닌) 클라이언트 목록 및 현재 활성 클라이언트에서 정의한 명령이 포함됩니다. 처음 두 명령 집합은 전역 명령입니다. 즉, 입력 활성 클라이언트에 관계없이 언제든지 사용할 수 있습니다. 클라이언트 정의 명령은 해당 클라이언트가 입력 활성이고 문자가 표시되는 경우에만 사용할 수 있습니다.
각 클라이언트 애플리케이션은 Commands 컬렉션이라는 명령 컬렉션을 정의할 수 있습니다. 컬렉션에 명령을 추가하려면 Add 또는 Insert 메서드를 사용합니다. 명령의 속성을 별도의 문으로 지정할 수 있지만 최적의 코드 성능을 위해 Add 또는 Insert 메서드 문에서 명령의 속성을 모두 지정합니다. 컬렉션의 각 명령에 대해 명령에 대한 사용자 액세스가 문자의 팝업 메뉴, 음성 명령 창, 둘 다 또는 둘 다에 표시되는지 여부를 확인할 수 있습니다. 예를 들어 명령이 문자의 팝업 메뉴에 표시되도록 하려면 명령의 Caption 및 Visible 속성을 설정합니다. 음성 명령 창에 명령을 표시하려면 명령의 VoiceCaption 및 Voice 속성을 설정합니다.
사용자는 클라이언트 애플리케이션이 입력 활성 상태인 경우에만 컬렉션의 개별 commCommands ands에 액세스할 수 있습니다. 따라서 문자를 다른 클라이언트 애플리케이션과 공유할 수 있는 경우 일반적으로 컬렉션의 명령뿐만 아니라 Commands 컬렉션 개체에 대한 Caption, VoiceCaption 및 Voice 속성을 설정하려고 합니다. 그러면 Commands 컬렉션에 대한 항목이 문자의 팝업 메뉴와 음성 명령 창에 배치됩니다.
사용자가 명령 항목을 선택하여 클라이언트로 전환하면 서버는 자동으로 클라이언트 입력을 활성화하고 ActivateInput 이벤트를 사용하여 클라이언트 애플리케이션에 알리고 컬렉션의 명령을 사용할 수 있게 합니다. 또한 서버는 DeActivateInput 이벤트를 사용하여 더 이상 입력-활성 상태가 아님을 클라이언트에 알깁니다. 이렇게 하면 서버가 현재 입력 활성 클라이언트의 컨텍스트에 적용되는 명령만 표시하고 수락할 수 있습니다. 또한 클라이언트 간의 명령 이름 충돌을 방지하는 역할을 합니다.
클라이언트는 Activate 메서드를 사용하여 입력 활성 클라이언트를 만들도록 명시적으로 요청할 수도 있습니다. 또한 이 메서드는 애플리케이션을 입력 활성 클라이언트가 아닌 것으로 설정하는 것도 지원합니다. 다른 애플리케이션과 문자를 공유할 때 이 메서드를 사용하여 애플리케이션 창이 포커스를 받을 때 애플리케이션이 입력 활성으로 설정되고 포커스가 끊어질 때 입력이 활성화되지 않도록 설정할 수 있습니다.
마찬가지로 Activate 메서드를 사용하여 애플리케이션을 문자의 활성 클라이언트로 설정할 수 있습니다. 활성 클라이언트는 해당 문자가 최상위 문자일 때 입력을 받는 클라이언트입니다. 이 상태 변경되면 서버는 ActiveClientChange 이벤트를 사용하여 애플리케이션에 알린다.
캐릭터의 팝업 메뉴가 표시되면 사용자가 메뉴를 다시 표시할 때까지 Commands 컬렉션의 속성이나 컬렉션의 명령이 변경되지 않습니다. 그러나 명령 창에는 변경 내용이 표시됩니다.