次の方法で共有


IAgentNotifySinkEx::ActiveClientChange

[Microsoft Agent は Windows 7 の時点で非推奨となり、後続のバージョンの Windows では使用できない可能性があります。]

HRESULT ActiveClientChange(
...long dwCharID,  // character ID
   long lStatus    // active state flag
);

アクティブ クライアントがキャラクターのアクティブ クライアントではなくなった場合に、クライアント アプリケーションに通知します。

  • 戻り値はありません。

dwCharID

アクティブ クライアントのステータスが変更された文字の識別子。

lStatus

クライアントのアクティブな状態の変更。次のいずれかの値の組み合わせになります。

説明
const unsigned short ACTIVATE_NOTACTIVE = 0;
クライアントがキャラクターのアクティブなクライアントではありません。
const unsigned short ACTIVATE_ACTIVE = 1;
クライアントがキャラクターのアクティブなクライアントです。
const unsigned short ACTIVATE_INPUTACTIVE = 2;
クライアントは入力アクティブです (最上位文字のアクティブ クライアント)。

複数のクライアント アプリケーションが同じキャラクターを共有する場合、そのキャラクターのアクティブなクライアントはマウス入力 (たとえば、Microsoft エージェント コントロールのクリック イベントやドラッグ イベント) を受け取ります。 同様に、複数の文字が表示されている場合、最上位の文字のアクティブ クライアント (入力アクティブ クライアントとも呼ばれます) は IAgentNotifySink::Command イベントを受信します。

キャラクターのアクティブ クライアントが変更されると、このイベントはそのキャラクターの ID を返し、アプリケーションがキャラクターのアクティブ クライアントになった場合は True を返し、アプリケーションがキャラクターのアクティブ クライアントでなくなった場合は False を返します。

ユーザーがキャラクタのポップアップ メニューまたは音声コマンドで別のクライアント アプリケーションのエントリを選択したとき、クライアント アプリケーションがアクティブ ステータスを変更したとき、または別のクライアント アプリケーションが Microsoft Agent への接続を終了したときに、クライアント アプリケーションはこのイベントを受信することがあります。 エージェントは、直接影響を受けるクライアント アプリケーション (アクティブ クライアントになるか、アクティブ クライアントでなくなるクライアント アプリケーション) にのみこのイベントを送信します。

Activate メソッドを使用すると、アプリケーションがキャラクターのアクティブ クライアントであるかどうか、またはアプリケーションが入力アクティブ クライアント (これにより、キャラクターが最上位になる) であるかどうかを設定することができます。

参照

IAgentCharacter::Activate, IAgentCharacterEx::GetActive, IAgentNotifySink::ActivateInputState