[Microsoft代理程式從 Windows 7 開始已被取代,而且可能無法在後續版本的 Windows 中使用。]
HRESULT Activate(
short sState, // topmost character or client setting
);
設定用戶端為使用中或字元最上層。
- 傳回S_OK,表示作業成功。
- 傳回S_FALSE,表示作業未成功。
-
sState
-
您可以指定此參數的下列值:
價值 描述 0 將設定為非使用中用戶端。 1 設定為使用中的用戶端。 2 將最上層字元設為最上層。
當顯示多個字元時,一次只能有一個字元接收語音輸入。 同樣地,當多個用戶端應用程式共用相同的字元時,一次只有一個用戶端會收到滑鼠輸入(例如,Microsoft Agent 控件按兩下或拖曳事件)。 要接收滑鼠和語音輸入的字元集是最上層字元,而接收輸入的用戶端是字元的作用中用戶端。 (最上層字元的視窗也會出現在字元視窗 z 順序的頂端。一般而言,用戶會藉由明確選取字元來判斷最上層的字元。 不過,最上層的啟用也會在顯示或隱藏字元時變更(字元會分別變成或不再最上層。
您也可以使用此方法,在用戶端收到導向字元的輸入時明確管理,例如當應用程式本身變成作用中時。 例如,將 State 設為 2 會讓字元最上層,而您的用戶端會收到使用者與字元互動所產生的所有滑鼠和語音輸入事件。 因此,它也會讓您的用戶端成為字元的輸入作用中用戶端。 不過,您也可以將 State 設定為 1,為字元設定使用中用戶端,而不需要將字元設為最上層。 這可讓用戶端在字元變成最上層時接收導向至該字元的輸入。 同樣地,當字元變成最上層時,您可以將用戶端設定為不是使用中用戶端(無法接收輸入),方法是將 [狀態] 設定為 0。 您可以使用 IAgentCharacter::HasOtherClients判斷字元是否有其他目前用戶端。
避免在 show方法之後直接呼叫此方法。 顯示 會自動設定輸入-主動用戶端。 隱藏字元時,如果 Show 方法完成之前,Activate 呼叫可能會失敗。
嘗試呼叫這個方法時,State 參數設定為 2(隱藏指定的字元時)將會失敗。 同樣地,如果您將狀態 設為 0,而且您的應用程式是唯一的用戶端,則此呼叫會失敗。 字元一律必須有最上層的用戶端。
注意
呼叫這個方法時,State 設定為 1 通常不會產生 AgentNotifySink::ActivateInputState 事件,除非沒有載入其他字元,否則您的應用程式已經輸入-主動。
另請參閱
IAgentCharacter::HasOtherClients