IAgentCommands
[Microsoft エージェントは Windows 7 の時点で非推奨となり、以降のバージョンの Windows では使用できない場合があります。]
Microsoft エージェント サーバーは、ユーザーが現在使用できるコマンドの一覧を保持します。 この一覧には、非表示や Microsoft エージェントのプロパティなどの一般的な操作のためにサーバーが定義するコマンド、使用可能な (ただし入力非アクティブな) クライアントの一覧、および現在アクティブなクライアントによって定義されているコマンドが含まれます。 最初の 2 つのコマンド セットはグローバル コマンドです。つまり、入力アクティブなクライアントに関係なく、いつでも使用できます。 クライアント定義コマンドは、そのクライアントが入力アクティブである場合にのみ使用できます。
IAgentCommands の IAgentCharacter インターフェイスに対してクエリを実行して、IAgentCommands インターフェイスを取得します。 各 Microsoft エージェント クライアント アプリケーションでは、 Commands コレクションと呼ばれるコマンドのコレクションを定義できます。 コレクションに Command を追加するには、Add メソッドまたは Insert メソッドを使用します。 IAgentCommand メソッドを使用して Command のプロパティを指定できますが、最適なコード パフォーマンスを得るには、新しい Command のプロパティを最初に設定するときに、IAgentCommands::Add メソッドまたは IAgentCommands::Insert メソッドで Command のすべてのプロパティを指定します。 プロパティの設定を照会または変更するには、 IAgentCommand メソッドを使用できます。
Commands コレクション内の各 Command について、文字のポップアップ メニュー、音声コマンド ウィンドウ、両方、またはどちらにもコマンドが表示されるかどうかを確認できます。 たとえば、文字のポップアップ メニューにコマンドを表示する場合は、コマンドの Caption プロパティと Visible プロパティを設定します。 [ 音声コマンド] ウィンドウにコマンドを表示するには、コマンドの Caption プロパティと Voice プロパティを設定します。
ユーザーは、クライアント アプリケーションが入力アクティブであり、文字が表示されている場合にのみ、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 プロパティ | キャラクターのポップアップメニューに表示される | [音声コマンド] ウィンドウに表示される |
---|---|---|---|---|---|
はい | はい | はい | True | はい(キャプションを使用 ) | はい(VoiceCaption を使用) |
はい | はい | いいえ¹ | True | はい(キャプションを使用 ) | いいえ |
はい | はい | はい | False | いいえ | はい(VoiceCaption を使用) |
はい | はい | いいえ¹ | False | いいえ | いいえ |
いいえ¹ | はい | はい | True | いいえ | はい(VoiceCaption を使用) |
いいえ¹ | はい | はい | False | いいえ | はい(VoiceCaption を使用) |
いいえ¹ | はい | いいえ¹ | True | いいえ | いいえ |
いいえ¹ | はい | いいえ¹ | False | いいえ | いいえ |
はい | いいえ¹ | はい | True | はい(キャプションを使用 ) | はい(キャプションを使用 ) |
はい | いいえ¹ | いいえ¹ | True | はい | いいえ |
はい | いいえ¹ | はい | False | いいえ | はい(キャプションを使用 ) |
はい | いいえ¹ | いいえ¹ | False | いいえ | いいえ |
いいえ¹ | いいえ¹ | はい | True | いいえ | いいえ² |
いいえ¹ | いいえ¹ | はい | False | いいえ | いいえ² |
いいえ¹ | いいえ¹ | いいえ¹ | True | いいえ | いいえ |
いいえ¹ | いいえ¹ | いいえ¹ | 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 プロパティの値を返します。 |
追加 | Command オブジェクトを Commands コレクションに追加します。 |
挿入 | Commands コレクションに Command オブジェクトを挿入します。 |
[削除] | Commands コレクション内の Command オブジェクトを削除します。 |
RemoveAll | Commands コレクションからすべての Command オブジェクトを削除します。 |