Condividi tramite


Requisiti dell'editor del metodo di input personalizzati (IME)

Queste linee guida e requisiti consentono di sviluppare un IME (Input Method Editor) personalizzato per aiutare un utente a inserire testo in una lingua che non può essere rappresentata facilmente su una tastiera QWERTY standard.

Per una panoramica degli IME, vedere Input Method Editor (IME).

IME predefinito

Un utente può selezionare uno degli IME attivi (Impostazioni -> Time & Language -> Language -> Preferred languages -> Language Pack - Options) per essere l'IME predefinito per la lingua preferita.

Impostazione lingua preferita

Selezionare la tastiera predefinita nella schermata Opzioni lingua per la lingua preferita.

Tastiera della lingua preferita

Importante

Non è consigliabile scrivere direttamente nel Registro di sistema per impostare la tastiera predefinita per l'IME personalizzato.

Requisiti di compatibilità

Di seguito sono riportati i requisiti di compatibilità di base per un IME personalizzato.

IME deve essere compatibile con le app di Windows

Usare Text Services Framework (TSF) per implementare le messaggistica istantanea. In precedenza, era possibile usare Input Method Manager (IMM32) per i servizi di input. Il sistema blocca ora gli IMEs implementati tramite Input Method Manager (IMM32).

All'avvio di un'app, TSF carica la DLL IME per l'IME attualmente selezionata dall'utente. Quando viene caricato un IME, è soggetto alle stesse restrizioni del contenitore dell'app dell'app. Ad esempio, un IME non riesce ad accedere a Internet se un'app non ha richiesto l'accesso a Internet nel manifesto. Questo comportamento garantisce che gli imes non possano violare i contratti di sicurezza.

TSF è l'intermediario tra l'app e l'IME. TSF comunica gli eventi di input all'IME e riceve i caratteri di input dall'IME dopo che l'utente ha selezionato un carattere.

Questo comportamento è identico a quello delle versioni precedenti di Windows, ma il caricamento in un'app di Windows influisce sulle potenziali funzionalità di un IME.

Se l'IME deve fornire funzionalità o interfaccia utente diverse tra le app di Windows e le app desktop, assicurarsi che la DLL caricata da TSF controlli il tipo di app in cui viene caricata. Chiamare il metodo ITfThreadMgrEx::GetActiveFlags nell'IME e controllare il flag TF_TMF_IMMERSIVEMODE, quindi l'IME attiva una logica dell'applicazione diversa a seconda del risultato.

Le app di Windows non supportano gli imes del servizio di testo tabella (TTS).

Nota

Alcuni strumenti per la generazione di messaggistica istantanea TTS producono imes contrassegnati come malware da Windows.

IME deve essere compatibile con la barra delle applicazioni

Nessuna barra della lingua per ospitare le icone IME. Viene invece visualizzato un indicatore di input nell'area di notifica che indica l'opzione di input corrente. L'indicatore di input mostra solo l'icona di personalizzazione IME per indicare l'IME attualmente in esecuzione. Inoltre, è presente un'icona della modalità IME che viene visualizzata a sinistra dell'icona di personalizzazione IME per consentire agli utenti di eseguire l'interruttore in modalità IME più comunemente usato, ad esempio l'attivazione o la disattivazione dell'IME.

L'indicatore di input mostra l'icona di personalizzazione IME e l'icona della modalità solo per gli IMEs compatibili. Gli imes che non sono compatibili non hanno l'icona di personalizzazione e l'icona della modalità visualizzate nell'area di notifica. L'indicatore di input mostra invece l'abbreviazione della lingua anziché l'icona di personalizzazione IME.

Archiviare le icone IME in un file DLL o EXE, anziché in un file .ico autonomo. La progettazione delle icone IME deve seguire le linee guida descritte nella sezione linee guida per la progettazione dell'interfaccia utente seguente.

Icona di personalizzazione IME

L'indicatore di input ottiene l'icona di personalizzazione IME dalla DLL IME usando l'ID risorsa definito dall'IME quando è stato registrato nel sistema.

Icona della modalità IME

Per visualizzare l'icona della modalità IME, potrebbe essere necessario fare affidamento sull'indicatore di input visualizzato nell'area di notifica. In questo caso, l'IME passa l'icona della modalità IME all'indicatore di input usando GUID_LBI_INPUTMODE.

Quando si passano le icone della modalità IME all'indicatore di input nell'area di notifica, le dimensioni predefinite dell'icona della modalità IME sono 16x16 pixel. Il ridimensionamento dell'interfaccia utente segue i valori DPI.

Quando si passa l'icona della modalità IME all'indicatore di input in Controllo dell'account utente in Desktop protetto, le dimensioni predefinite dell'icona della modalità IME sono 20x20 pixel. L'icona di ridimensionamento dell'interfaccia utente per la modalità IME nel controllo dell'account utente segue PPI.

IME deve funzionare nel contenitore dell'app

Alcune funzioni IME sono interessate in un contenitore di app.

  • File di dizionario: spesso, i file IMes dispongono di file di dizionario di sola lettura per eseguire il mapping dell'input dell'utente a caratteri specifici. Per accedere a questi file dall'interno di un contenitore di app, l'IME deve inserirli nelle directory Programmi o Windows. Per impostazione predefinita, queste directory possono essere lette da un contenitore di app, in modo che gli imes possano accedere ai file di dizionario archiviati in questi percorsi. Se l'IME deve archiviare il file del dizionario in un'altra posizione, deve modificare in modo esplicito gli elenchi Controllo di accesso (ACL) dei file di dizionario per consentire l'accesso dai contenitori di app.
  • Aggiornamento internet : se l'IME deve aggiornare i dizionari usando i dati da Internet, non può farlo in modo affidabile all'interno di un contenitore di app, perché l'accesso a Internet non è sempre consentito. L'IME deve invece eseguire un processo desktop separato responsabile dell'aggiornamento dei file di dizionario con dati da Internet.
  • Apprendimento in tempo reale: se un IME è in esecuzione in un contenitore di app con accesso a Internet, non esiste alcuna restrizione sugli endpoint con cui l'IME può comunicare. In questo caso, un IME può usare un server cloud per fornire servizi di apprendimento on-the-fly. Alcuni messaggistica istantanea scaricano e caricano l'input dell'utente in tempo reale, mentre l'utente sta digitando. Poiché l'accesso a Internet non è garantito in un contenitore di app, questo potrebbe non essere sempre consentito.
  • Condivisione di informazioni tra processi : i messaggi istantanei potrebbero dover condividere i dati sulle preferenze di input dell'utente tra app che si trovano in contenitori di app diversi. Usare un servizio Web per condividere i dati tra le app.

Importante

Se si tenta di aggirare le regole di sicurezza dei contenitori di app, l'IME può essere considerato malware e bloccato.

IME e tastiera virtuale

L'IME deve assicurarsi che l'interfaccia utente del riquadro candidato e altri elementi dell'interfaccia utente non vengano disegnati sotto la tastiera virtuale. La tastiera virtuale viene visualizzata in una fascia di ordine z superiore rispetto a tutte le app e l'interfaccia utente IME viene visualizzata nella stessa fascia di ordine z dell'app in cui è attiva. Di conseguenza, la tastiera virtuale può sovrapporsi e nascondere l'interfaccia utente IME. Nella maggior parte dei casi, l'app deve ridimensionare la finestra in modo da tenere conto della tastiera virtuale. Se un'app non viene ridimensionata, l'IME può comunque usare l'API InputPane per ottenere la posizione della tastiera virtuale. L'IME esegue una query sulla proprietà Location oppure registra un gestore per gli eventi Show e Hide della tastiera virtuale. L'evento Show viene generato ogni volta che l'utente tocca un campo di modifica, anche se la tastiera virtuale è attualmente visualizzata. L'IME può usare questa API per ottenere lo spazio dello schermo usato dalla tastiera virtuale prima che l'IME estrae l'interfaccia utente candidata (o un'altra) e riflusso l'interfaccia utente imes per evitare di disegnare sotto la tastiera virtuale.

Specifica del layout della tastiera virtuale preferito

L'IME può specificare il layout della tastiera virtuale da usare e l'IME è abilitato per l'uso con layout ottimizzati per il tocco. Questa funzionalità è limitata agli IMEs per le lingue di input coreano, giapponese, cinese semplificato e cinese tradizionale.

Esistono sette layout supportati dalla tastiera virtuale, tre dei quali sono layout classici e quattro dei quali sono layout ottimizzati per il tocco. I layout classici hanno un aspetto e si comportano come una tastiera fisica.

Tutti i tre layout classici sono destinati all'input del cinese tradizionale in formati diversi:

  • input basato su Telefono tic
  • Input Changjie
  • Ingresso Dayi

Oltre ai layout classici, è disponibile un layout ottimizzato per il tocco per ognuna delle lingue di input coreano, giapponese, cinese semplificato e cinese tradizionale.

Per usare questa funzionalità, l'IME deve implementare l'interfaccia ITfFnGetPreferredTouchKeyboardLayout, esportata dall'IME tramite l'API ITfFunctionProvider di Text Services Framework.

Se l'IME non supporta l'interfaccia ITfFnGetPreferredTouchKeyboardLayout, l'uso dell'IME comporta il layout classico predefinito per la lingua visualizzata dalla tastiera virtuale.

Se l'IME deve impostare uno dei layout classici come layout preferito, non è necessario alcun lavoro aggiuntivo sul lato IME oltre a supportare le interfacce ITfFnGetPreferredTouchKeyboardLayout e ITfFunctionProvider. Per lavorare con i layout ottimizzati per il tocco, tuttavia, sono necessari altri lavori nell'IME e questo è descritto nella sezione successiva.

Layout ottimizzato per il tocco

Le tastiere ottimizzate per il tocco per le lingue di input coreano, giapponese, cinese semplificato e cinese tradizionale visualizzano un layout diverso per le modalità di conversione IME On e IME Off. C'è un tasto sulla tastiera virtuale per impostare la modalità di conversione IME su Attivato o Disattivato, ma la modalità IME della tastiera può anche cambiare man mano che lo stato attivo cambia tra i controlli di modifica.

Le tastiere ottimizzate per il tocco per le lingue di input giapponese, cinese semplificato e cinese tradizionale contengono un tasto o i tasti usati dall'IME per spostarsi tra le pagine candidate. Per il cinese giapponese e semplificato, il tasto pagina candidata viene visualizzato nel layout ottimizzato per il tocco. Per il cinese tradizionale, sono disponibili chiavi separate per le pagine candidate precedenti e successive.

Quando questi tasti vengono premuti, la tastiera virtuale chiama la funzione SendInput per inviare i seguenti caratteri Unicode Private Use Area all'applicazione incentrata, su cui l'IME può intercettare e agire:

  • Pagina successiva (0xF003): inviato quando si preme il tasto pagina candidata sulla tastiera ottimizzata per il tocco per il cinese giapponese e semplificato oppure quando si preme il tasto pagina successivo sulla tastiera ottimizzata per il tocco per il cinese tradizionale.
  • Pagina precedente (0xF004): inviato quando si preme il tasto pagina candidata contemporaneamente al tasto MAIUSC sulla tastiera ottimizzata per il tocco per il cinese giapponese e semplificato oppure quando si preme il tasto pagina precedente sulla tastiera ottimizzata per il tocco per il cinese tradizionale.

Questi caratteri vengono inviati come input Unicode. Il paragrafo successivo illustra in dettaglio come estrarre le informazioni sui caratteri durante le notifiche del sink di eventi chiave che verranno ricevute da Text Services Framework IME. Questi valori di carattere non sono definiti in alcun file di intestazione, quindi sarà necessario definirli nel codice.

Per intercettare l'input da tastiera, l'IME deve essere registrato come sink di eventi chiave. Per l'input Unicode generato tramite la funzione SendInput, il parametro WPARAM dei callback ITfKeyEventSink (OnKeyDown, OnKeyUp, OnTestKeyDown, OnTestKeyUp) contiene sempre la chiave virtuale VK_PACKET e non identifica direttamente il carattere.

Implementare la sequenza di chiamata seguente per accedere al carattere:

// Keyboard state
BYTE abKbdState[256];
if (!GetKeyboardState(abKbdState))
{
   return 0;
}

// Map virtual key to character code
WCHAR wch;
if (ToUnicode(VK_PACKET, 0, abKbdState, &wch, 1, 0) == 1)
{
   return wch;
}

Cercare Integrazione IME

Fornire agli utenti funzionalità di ricerca tramite il contratto di ricerca e l'integrazione con il riquadro di ricerca.

Riquadro di ricerca e suggerimenti IME
Riquadro di ricerca e suggerimenti IME

Il riquadro di ricerca è una posizione centrale per gli utenti che eseguono ricerche in tutte le app. Per gli utenti IME, Windows offre un'esperienza di ricerca unica che consente l'integrazione di IMEs compatibili con Windows per una maggiore efficienza e usabilità.

Gli utenti che digitano con un IME compatibile con la ricerca ottengono due vantaggi principali:

  • Interazione senza problemi tra IME e l'esperienza di ricerca. I candidati IME vengono visualizzati inline nella casella di ricerca senza occlusione dei suggerimenti di ricerca. L'utente può usare la tastiera per spostarsi facilmente tra la casella di ricerca, i candidati di conversione IME e i suggerimenti di ricerca.
  • Accesso più rapido ai risultati e ai suggerimenti pertinenti forniti dalle applicazioni. L'app ha accesso a tutti i candidati di conversione correnti per fornire suggerimenti più pertinenti. Per classificare in ordine di priorità i suggerimenti di ricerca, le conversioni vengono date alle app in ordine di pertinenza. Gli utenti trovano e selezionano il risultato desiderato senza convertirli, digitando solo fonetico.

Un IME è compatibile con l'esperienza di ricerca integrata se soddisfa i criteri seguenti:

Se attivato nel riquadro di ricerca, un IME compatibile viene inserito in modalità UIless e non può visualizzarne l'interfaccia utente. Invia invece i candidati di conversione a Windows, che li visualizza nel controllo elenco candidati inline, come illustrato nello screenshot precedente.

Inoltre, l'IME invia i candidati che devono essere usati per eseguire la ricerca corrente. Questi candidati possono essere uguali ai candidati di conversione oppure possono essere personalizzati per la ricerca.

I candidati di ricerca validi soddisfano i criteri seguenti:

  • Nessuna sovrapposizione del prefisso. Ad esempio, 北京大学 e北京 sono ridondanti perché uno è un prefisso dell'altro.
  • Nessun candidato ridondante. Qualsiasi candidato ridondante non è utile per la ricerca perché non consente di filtrare i risultati. Ad esempio, qualsiasi risultato corrispondente a 北京大学 corrisponde anche a 北京.
  • Nessun candidato di stima, solo conversione. Ad esempio, se l'utente digita "be", l'IME può restituire 北 come candidato, ma non 北京大学. In genere, i candidati di stima sono troppo restrittivi.

Gli messaggistica istantanea che non soddisfano i criteri non sono compatibili con la visualizzazione della ricerca nello stesso modo di altri controlli e non possono sfruttare l'integrazione dell'interfaccia utente e i candidati per la ricerca. Le app ricevono query solo dopo che l'utente ha terminato la composizione.

Quando un'app che supporta il contratto di ricerca riceve una query, l'evento di query contiene una matrice "queryTextAlternatives" che contiene tutte le alternative note, classificate dalla più rilevante (probabilmente) alla meno rilevante (improbabile).

Quando vengono fornite alternative, l'app deve considerare ogni alternativa come query e restituire tutti i risultati corrispondenti a una qualsiasi delle alternative. L'app dovrebbe comportarsi come se l'utente avesse emesso più query contemporaneamente, essenzialmente eseguendo una query "o" al servizio fornendo i risultati. Per considerazioni sulle prestazioni, le app spesso limitano la corrispondenza tra 5 e 20 delle alternative più rilevanti.

Linee guida per la progettazione interfaccia utente

Tutti gli messaggistica istantanea devono seguire le linee guida per l'esperienza utente descritte in Progettazione e codice delle app di Windows.

Non usare finestre permanenti

Le finestre IME dovrebbero essere visualizzate solo quando necessario e non dovrebbero essere sempre visibili. Quando gli utenti non devono digitare, le finestre IME non devono essere visualizzate. La finestra IME non deve essere una finestra a schermo intero. Le finestre IME non devono sovrapporsi tra loro. Le finestre devono essere progettate in uno stile di Windows e seguire il ridimensionamento dell'interfaccia utente.

Icone IME

Esistono due tipi di icone IME, icone di personalizzazione e icone in modalità. Tutte le icone IME devono essere progettate solo con colori neri e bianchi. Le nuove icone IME prendono in prestito dall'aspetto glifoico delle icone della barra delle applicazioni. Questo stile è stato creato in modo che tutti i linguaggi possano usarlo per integrare l'aspetto familiare, differenziandosi tra loro.

Il formato di file per le icone IME è ICO. È necessario specificare le dimensioni dell'icona seguenti.

  • 16x16 pixel
  • 20x20 pixel
  • 24x24 pixel
  • 32x32 pixel
  • 40x40 pixel
  • 48x48 pixel

Assicurarsi che le icone a 32 bit con canale alfa siano fornite in tutte le risoluzioni.

Le icone del marchio IME sono definite da una casella bianca in cui viene posizionato un glifo tipografico sottoposto a rendering in un carattere tipografico moderno. Ogni glifo che definisce viene scelto da ogni team linguistico. Il glifo è nero. La casella include un tratto esterno di 1 pixel in nero con opacità del 50%. Le versioni "Nuove" sono definite da un angolo arrotondato in alto a sinistra della casella.

Le icone della modalità IME sono definite da un glifo tipografico bianco in un carattere tipografico moderno che include un tratto esterno di 1 pixel in nero al 50% di opacità.

Icon Descrizione
Icona del marchio IME di esempio per ChangeJie cinese tradizionale. Icona del marchio IME di esempio per ChangeJie cinese tradizionale.
Icona del marchio IME di esempio per il nuovo changejie cinese tradizionale. Icona del marchio IME di esempio per ChangeJie cinese tradizionale.
Icona della modalità cinese Icona della modalità IME di esempio.

Finestra di proprietà

Per visualizzare l'interfaccia utente candidata, un IME deve impostare la finestra come finestra di proprietà, in modo che possa essere visualizzata sull'app attualmente in esecuzione. Usare il metodo ITfContextView::GetWnd per recuperare la finestra da possedere. Se GetWnd restituisce un errore o nullHWND, chiamare la funzione GetFocus .

if (FAILED(pView->GetWnd(&parentWndHandle)) || (parentWndHandle == nullptr)) { parentWndHandle = GetFocus(); }

Interazione della finestra candidata IME con superfici di chiusura della luce

Il modello di chiusura per le finestre popup è denominato "chiusura della luce" perché è facile per un utente chiudere tali finestre. Affinché gli IMEs funzionino correttamente nel modello di interazione di Windows, le finestre IME devono partecipare al modello di chiusura della luce.

Per partecipare al modello di chiusura della luce, l'IME deve generare tre nuovi eventi di Windows usando la funzione NotifyWinEvent o una funzione simile. Questi nuovi eventi sono:

  • EVENT_OBJECT_IME_SHOW: generare questo evento quando l'IME diventa visibile.
  • EVENT_OBJECT_IME_HIDE: genera questo evento quando l'IME è nascosto.
  • EVENT_OBJECT_IME_CHANGE: genera questo evento quando l'IME sposta o modifica le dimensioni.

Dichiarazione di compatibilità

Gli imes dichiarano che sono compatibili registrando la categoria GUID_TFCAT_TIPCAP_IMMERSIVESUPPORT per il proprio IME usando ITfCategoryMgr::RegisterCategory.

Impostare la modalità IME predefinita su attivato

Forniamo un'esperienza utente migliore per gli messaggistica istantanea.

Supporto per il ridimensionamento DPI per le applicazioni desktop

Il supporto avanzato per il ridimensionamento DPI consente di eseguire query sul livello di consapevolezza DPI dichiarato di ogni processo desktop per determinare se è necessario ridimensionare l'interfaccia utente. In uno scenario multi-monitor, Windows ridimensiona l'interfaccia utente in modo appropriato per impostazioni DPI diverse in ogni monitor.

Poiché l'IME viene eseguito nel contesto del processo di ogni applicazione, non è consigliabile dichiarare un livello di consapevolezza DPI per l'IME. In questo modo, l'IME viene eseguito al livello di consapevolezza DPI del processo corrente.

Per assicurarsi che tutti gli elementi dell'interfaccia utente IME abbiano parità di scalabilità con gli elementi dell'interfaccia utente del processo in cui si esegue, è necessario rispondere in modo appropriato a valori DPI diversi.

Nota

Per garantire parità con le nuove applicazioni desktop, l'IME deve supportare la consapevolezza per monitor-DPI, ma non deve dichiarare un livello di consapevolezza. Il sistema determina i requisiti di ridimensionamento appropriati in ogni scenario.

Per informazioni dettagliate sui requisiti di supporto per il ridimensionamento DPI per le applicazioni desktop, vedere DPI elevato.

Installazione di IME

Se si compila l'IME usando Microsoft Visual Studio, creare un'esperienza di installazione per l'IME usando un programma di installazione di terze parti, ad esempio InstallShield from Flexera Software.

I passaggi seguenti illustrano come usare InstallShield per creare un progetto di installazione per la DLL IME.

  • Installare Visual Studio.
  • Avviare Visual Studio.
  • Scegliere Nuovo dal menu File, quindi selezionare Progetto. Verrà visualizzata la finestra di dialogo Nuovo progetto.
  • Nel riquadro sinistro passare a Modelli > Altri tipi di progetto > Installazione e distribuzione, fare clic su Abilita InstallShield Limited Edition e fare clic su OK. Seguire le istruzioni di installazione.
  • Riavviare Visual Studio.
  • Aprire il file (.sln) della soluzione IME.
  • n Esplora soluzioni, fare clic con il pulsante destro del mouse sulla soluzione, puntare ad Aggiungi e selezionare Nuovo progetto. Verrà visualizzata la finestra di dialogo Aggiungi nuovo progetto.
  • Nel controllo visualizzazione albero a sinistra passare a Modelli > Altri tipi di progetto > InstallShield Limited Edition.
  • Nella finestra centrale cliccare su Progetto InstallShield Limited Edition.
  • Nella casella di testo Nome digitare "SetupIME" e fare clic su OK.
  • Nella finestra di dialogo Assistente progetto fare clic su Informazioni sull'applicazione.
  • Immettere il nome della società e gli altri campi.
  • Fare clic su Application Files.
  • Nel riquadro sinistro fare clic con il pulsante destro del mouse sulla cartella [INSTALLDIR] e selezionare Nuova cartella. Assegnare alla cartella il nome "Plugins".
  • Fare clic su Add Files (Aggiungi filer). Passare alla DLL IME e aggiungerla alla cartella Plugins . Ripetere questo passaggio per il dizionario IME.
  • Fare clic con il pulsante destro del mouse su IME DLL e scegliere Proprietà. Viene visualizzata la finestra di dialogo Proprietà.
  • Nella finestra di dialogo Proprietà fare clic sulla scheda Impostazioni COM &.NET.
  • In Tipo di registrazione selezionare Registrazione automatica e fare clic su OK.
  • Compilare la soluzione. La DLL IME viene compilata e InstallShield crea un file setup.exe che consente agli utenti di installare l'IME in Windows.

Per creare un'esperienza di installazione personalizzata, chiamare il metodo ITfInputProcessorProfileMgr::RegisterProfile per registrare l'IME durante l'installazione. Non scrivere direttamente le voci del Registro di sistema.

Se l'IME deve essere utilizzabile immediatamente dopo l'installazione, chiamare InstallLayoutOrTip per aggiungere l'IME ai metodi di input abilitati per l'utente, usando il formato seguente per il parametro psz:

<LangID 1>:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

Accessibilità IME

Implementare la convenzione seguente per rendere gli IMEs conformi ai requisiti di accessibilità e per lavorare con l'Assistente vocale. Per rendere accessibili gli elenchi candidati, gli imes devono seguire questa convenzione.

  • L'elenco dei candidati deve avere un UIA_AutomationIdPropertyId uguale a "IME_Candidate_Window" per gli elenchi di candidati di conversione o "IME_Prediction_Window" per gli elenchi dei candidati di stima.
  • Quando l'elenco dei candidati viene visualizzato e scompare, genera rispettivamente eventi di tipo UIA_MenuOpenedEventId e UIA_MenuClosedEventId
  • Quando il candidato selezionato corrente cambia, l'elenco dei candidati genera un UIA_SelectionItem_ElementSelectedEventId. L'elemento selezionato deve avere una proprietà UIA_SelectionItemIsSelectedPropertyId uguale a TRUE.
  • Il UIA_NamePropertyId per ogni elemento nell'elenco dei candidati deve essere il nome del candidato. Facoltativamente, è possibile fornire informazioni aggiuntive per disambiguare i candidati tramite UIA_HelpTextPropertyId.