[Microsoft エージェントは Windows 7 の時点で非推奨となり、以降のバージョンの Windows では使用できない可能性があります。]
Microsoft エージェント サーバーは、ユーザーが現在使用できるコマンドの一覧を保持します。 この一覧には、非表示や Microsoft エージェントのプロパティなどの一般的な操作用にサーバーが定義するコマンド、使用可能な (ただし、非入力アクティブな) クライアントの一覧、現在のアクティブなクライアントによって定義されているコマンドが含まれます。 最初の 2 つのコマンド セットはグローバル コマンドです。つまり、入力/アクティブなクライアントに関係なく、いつでも使用できます。 クライアント定義コマンドは、そのクライアントが入力アクティブである場合にのみ使用できます。
IAgentCommandsの IAgentCharacterインターフェイスクエリを実行して、IAgentCommands インターフェイスを取得します。 各 Microsoft エージェント クライアント アプリケーションは、Commands コレクションと呼ばれるコマンドのコレクションを定義できます。 コマンド をコレクションに追加するには、Add または Insert メソッドを使用します。 IAgentCommandメソッド使用して コマンドの プロパティを指定できますが、最適なコード パフォーマンスを得るための コマンドのプロパティはすべて、IAgentCommands::Add メソッドまたは IAgentCommands:: Insert Commandのプロパティを最初に設定するときに指定します。 IAgentCommand メソッドを使用して、プロパティの設定を照会または変更できます。
Commands コレクション内の各 コマンド について、そのコマンドがキャラクターのポップアップ メニュー、音声コマンド ウィンドウ、両方に表示されるか、どちらに表示されるかを決定できます。 たとえば、文字のポップアップ メニューにコマンドを表示する場合は、コマンドの Caption と visibleプロパティ設定します。 音声コマンド ウィンドウのにコマンドを表示するには、コマンドの Caption プロパティと Voice プロパティを設定します。
ユーザーは、クライアント アプリケーションが入力アクティブであり、文字が表示されている場合にのみ、Commands コレクション内の個々のコマンドにアクセスできます。 そのため、通常は、Commands、VoiceCaption、および Commands コレクション オブジェクトの voiceプロパティとコレクション内のコマンドのを設定する必要があります。これは、文字のポップアップ メニューと音声コマンド ウィンドウに Commands コレクションのエントリが配置されるためです。 ユーザーが Commands エントリを選択してクライアントに切り替えると、サーバーは自動的にクライアント入力をアクティブにし、IAgentNotifySink::ActivateInputState を使用してクライアント アプリケーションに通知し、そのコレクション内の Commands を使用できるようにします。 また、サーバーは、IAgentNotifySink::ActivateInputState イベントを使用して、入力がアクティブでなくなったことをクライアントに通知します。 これにより、サーバーは、現在の入力/アクティブなクライアントのコンテキストに適用される コマンド のみを表示して受け入れることが可能になります。 また、コマンド-name のクライアント間の競合を回避するためにも機能します。
クライアントは、IAgentCharacter::Activate メソッドを使用して、自身を入力/アクティブ クライアントにすることを明示的に要求することもできます。 このメソッドでは、アプリケーションを入力/アクティブ クライアントにしない設定もサポートしています。 このメソッドは、文字を別のアプリケーションと共有する場合に使用し、アプリケーション ウィンドウがフォーカスを取得したときに入力アクティブに設定し、フォーカスが失われるときに入力/アクティブにしないように設定できます。
同様に、IAgentCharacter::Activate を使用して、アプリケーションを文字のアクティブなクライアントに設定 (または設定しない) できます。 アクティブなクライアントは、その文字が最上位の文字である場合に入力を受け取るクライアントです。 この状態が変わると、サーバーは IAgentNotifySinkEx::ActiveClientChangeイベントアプリケーションに通知します。
文字のポップアップ メニューが表示されると、Commands コレクションのプロパティに対する変更、またはそのコレクション内のコマンドは、ユーザーがメニューを再表示するまで表示されません。 ただし、音声コマンド ウィンドウを開くと、変更が発生したときに表示されます。
IAgentCommands は、アプリケーションが Commands コレクションのプロパティを追加、削除、設定、およびクエリできるようにするインターフェイスを定義します。 これらの関数は、IAgentCommandsExからも使用できます。
Commands コレクションは、ポップアップ メニューと文字の [音声コマンド] ウィンドウの両方でコマンドとして表示できます。 Commands コレクションを表示するには、その Caption プロパティを設定する必要があります。 次の表は、Commands コレクションのプロパティがプレゼンテーションにどのように影響するかをまとめたものです。
| Caption プロパティ | Voice-Caption プロパティ | Voice プロパティ | Visible プロパティ | キャラクターのポップアップメニューに表示される | [音声コマンド] ウィンドウに表示される |
|---|---|---|---|---|---|
| はい | はい | はい | 真 | はい(Caption を使用) | はい(VoiceCaption を使用) |
| はい | はい | No¹ | 真 | はい(Caption を使用) | いいえ |
| はい | はい | はい | 偽 | いいえ | はい(VoiceCaption を使用) |
| はい | はい | No¹ | 偽 | いいえ | いいえ |
| No¹ | はい | はい | 真 | いいえ | はい(VoiceCaption を使用) |
| No¹ | はい | はい | 偽 | いいえ | はい(VoiceCaption を使用) |
| No¹ | はい | No¹ | 真 | いいえ | いいえ |
| No¹ | はい | No¹ | 偽 | いいえ | いいえ |
| はい | No¹ | はい | 真 | はい(Caption を使用) | はい(Caption を使用) |
| はい | No¹ | No¹ | 真 | はい | いいえ |
| はい | No¹ | はい | 偽 | いいえ | はい(Caption を使用) |
| はい | No¹ | No¹ | 偽 | いいえ | いいえ |
| No¹ | No¹ | はい | 真 | いいえ | No² |
| No¹ | No¹ | はい | 偽 | いいえ | No² |
| No¹ | No¹ | No¹ | 真 | いいえ | いいえ |
| No¹ | No¹ | No¹ | 偽 | いいえ | いいえ |
¹ プロパティ設定が null の場合。 一部のプログラミング言語では、空の文字列が null 文字列と同じとは解釈されない場合があります。
²コマンドは引き続き音声でアクセスできます。
Vtable Order のメソッドを する
| 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 プロパティの値を返します。 |
| の追加 | Command オブジェクトを Commands コレクションに追加します。 |
| 挿入 | Commands コレクションに Command オブジェクトを挿入します。 |
| 削除 | Commands コレクション内の Command オブジェクトを削除します。 |
| RemoveAll | Commands コレクションからすべての Command オブジェクトを削除します。 |