IAgentNotifySinkEx::ActiveClientChange

[自 Windows 7 起弃用 Microsoft Agent,在后续版本的 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 代理的连接。 代理仅会将此事件发送到直接影响到那些成为活动客户端或停止成为活动客户端的客户端应用程序。

可使用 Activate 方法设置应用程序是字符的活动客户端,还是使应用程序成为输入活动客户端(此操作还会使该字符位于最顶层)。

另请参阅

IAgentCharacter::ActivateIAgentCharacterEx::GetActiveIAgentNotifySink::ActivateInputState