Commands コレクション オブジェクト

[Microsoft エージェントは Windows 7 の時点で非推奨となり、以降のバージョンの Windows では使用できない場合があります。]

Microsoft エージェント サーバーは、ユーザーが現在使用できるコマンドの一覧を保持します。 この一覧には、サーバーが一般的な対話のために定義するコマンド ([音声コマンド ウィンドウの非表示] や [開く] など)、使用可能な (ただし入力がアクティブでない) クライアントの一覧、および現在アクティブなクライアントで定義されているコマンドが含まれます。 最初の 2 つのコマンド セットはグローバル コマンドです。つまり、入力アクティブなクライアントに関係なく、いつでも使用できます。 クライアント定義コマンドは、そのクライアントが入力アクティブで文字が表示されている場合にのみ使用できます。

各クライアント アプリケーションでは、 Commands コレクションと呼ばれるコマンドのコレクションを定義できます。 コレクションにコマンドを追加するには、 Add メソッドまたは Insert メソッドを使用します。 コマンドのプロパティは個別のステートメントで指定できますが、最適なコード パフォーマンスを得るには、 Add または Insert メソッド ステートメントですべてのコマンドのプロパティを指定します。 コレクション内の各コマンドについて、ユーザーがコマンドにアクセスできるかどうかを、文字のポップアップ メニュー、音声コマンド ウィンドウ、両方、またはどちらにも表示するかどうかを決定できます。 たとえば、文字のポップアップ メニューにコマンドを表示する場合は、コマンドの Caption プロパティと Visible プロパティを設定します。 [音声コマンド] ウィンドウにコマンドを表示するには、コマンドの VoiceCaption プロパティと Voice プロパティを設定します。

ユーザーは、クライアント アプリケーションが入力アクティブな場合にのみ、コレクション内の個々のcomm コマンドと にアクセスできます。 したがって、文字を他のクライアント アプリケーションと共有する場合は、通常、Commands コレクション オブジェクトとコレクション内のコマンドの CaptionVoiceCaptionVoice の各プロパティを設定します。 これにより、 Commands コレクションのエントリが文字のポップアップ メニューと [音声コマンド] ウィンドウに配置されます。

ユーザーが [コマンド] エントリを選択してクライアントに切り替えると、サーバーは自動的にクライアント入力をアクティブにし、 ActivateInput イベントを使用してクライアント アプリケーションに通知し、コレクション内のコマンドを使用できるようにします。 また、サーバーは 、DeActivateInput イベントで入力がアクティブでなくなったことをクライアントに通知します。 これにより、サーバーは、現在の入力アクティブなクライアントのコンテキストに適用されるコマンドのみを表示して受け入れることが可能になります。 また、クライアント間のコマンド名の競合を回避するためにも機能します。

また、クライアントは Activate メソッドを使用して、それ自体を入力アクティブなクライアントにすることを明示的に要求することもできます。 このメソッドでは、アプリケーションを入力アクティブ クライアントに設定することもサポートされています。 このメソッドは、別のアプリケーションと文字を共有する場合に使用し、アプリケーション ウィンドウがフォーカスを取得したときに入力アクティブに設定し、フォーカスが失われる場合は入力アクティブにしないように設定できます。

同様に、 Activate メソッドを使用して、アプリケーションを文字のアクティブなクライアントに設定 (または設定しない) できます。 アクティブなクライアントは、その文字が一番上の文字のときに入力を受け取るクライアントです。 この状態が変わると、サーバーは ActiveClientChange イベントを使用してアプリケーションに通知します。

文字のポップアップ メニューが表示されると、 Commands コレクションのプロパティまたはコレクション内のコマンドに対する変更は、ユーザーがメニューを再表示するまで表示されません。 ただし、[コマンド] ウィンドウには変更が発生すると表示されます。