Oggetto Raccolta Commands

[Microsoft Agent è deprecato a partire da Windows 7 e potrebbe non essere disponibile nelle versioni successive di Windows.]

Il server Microsoft Agent gestisce un elenco di comandi attualmente disponibili per l'utente. Questo elenco include comandi che il server definisce per l'interazione generale (ad esempio Nascondi e Apri finestra comandi vocali), l'elenco dei client disponibili (ma non attivi di input) e i comandi definiti dal client attivo corrente. I primi due set di comandi sono comandi globali; ovvero, sono disponibili in qualsiasi momento, indipendentemente dal client attivo di input. I comandi definiti dal client sono disponibili solo quando il client è attivo dall'input e il carattere è visibile.

Ogni applicazione client può definire una raccolta di comandi denominata raccolta Commands . Per aggiungere un comando alla raccolta, usare il metodo Add o Insert . Anche se è possibile specificare le proprietà di un comando con istruzioni separate, per prestazioni ottimali del codice, specificare tutte le proprietà di un comando nell'istruzione Add o Insert method. Per ogni comando della raccolta, è possibile determinare se l'accesso dell'utente al comando viene visualizzato nel menu a comparsa del carattere, nella finestra comandi vocali, in entrambi o in nessuno dei due. Ad esempio, se si vuole che un comando venga visualizzato nel menu a comparsa per il carattere, impostare le proprietà Didascalia e Visibile del comando. Per visualizzare il comando nella finestra Comandi vocali, impostare le proprietà VoiceCaption e Voice del comando.

Un utente può accedere ai singoli commandsand nella raccolta solo quando l'applicazione client è attiva. Pertanto, quando si condivide il carattere con altre applicazioni client, in genere si vuole impostare le proprietà Caption, VoiceCaption e Voice per l'oggetto raccolta Commands e per i comandi nell'insieme. In questo modo viene inserita una voce per l'insieme Commands nel menu a comparsa di un carattere e nella finestra Comandi vocali.

Quando l'utente passa al client scegliendo la voce Comandi , il server rende automaticamente attivo l'input client, notificando all'applicazione client l'evento ActivateInput e rende disponibili i comandi nella raccolta. Il server notifica anche al client che non è più attivo di input con l'evento DeActivateInput . Ciò consente al server di presentare e accettare solo i comandi che si applicano al contesto del client attivo di input corrente. Serve anche per evitare collisioni tra i nomi dei comandi tra i client.

Un client può anche richiedere in modo esplicito di effettuare il client attivo di input usando il metodo Activate . Questo metodo supporta anche l'impostazione dell'applicazione per non essere il client attivo di input. È possibile usare questo metodo quando si condivide un carattere con un'altra applicazione, impostando l'applicazione da attivare quando la finestra dell'applicazione ottiene lo stato attivo e non attiva l'input quando perde lo stato attivo.

Analogamente, è possibile usare il metodo Activate per impostare l'applicazione come (o meno) il client attivo del carattere. Il client attivo è il client che riceve l'input quando il carattere è il carattere più alto. Quando questo stato cambia, il server invia una notifica all'applicazione con l'evento ActiveClientChange .

Quando viene visualizzato un menu a comparsa di un carattere, le modifiche alle proprietà di un insieme Commands o ai comandi nella raccolta non vengono visualizzati finché l'utente non riproduce il menu. Tuttavia, la finestra Comandi visualizza le modifiche durante l'esecuzione.