Freigeben über


Anforderungen des Benutzerdefinierten Eingabemethoden-Editors (IME)

Diese Richtlinien und Anforderungen können Ihnen helfen, einen benutzerdefinierten Eingabemethoden-Editor (INPUT Method Editor, IME) zu entwickeln, um einem Benutzer bei der Eingabe von Text in einer Sprache zu helfen, die nicht einfach auf einer standardmäßigen QWERTY-Tastatur dargestellt werden kann.

Eine Übersicht über IMEs finden Sie im Eingabemethoden-Editor (INPUT Method Editor, IME).

Standard-IME

Ein Benutzer kann jeden seiner aktiven IMEs (Einstellungen -> Zeit & Sprache - Sprache ->> Bevorzugte Sprachen - Sprachpaket -> Optionen) auswählen, um der standard-IME für die bevorzugte Sprache zu sein.

Bevorzugte Spracheinstellung

Wählen Sie die Standardtastatur auf dem Bildschirm "Sprachoptionen" für die bevorzugte Sprache aus.

Bevorzugte Sprachtastaturen

Von Bedeutung

Es wird nicht empfohlen, direkt in die Registrierung zu schreiben, um die Standardtastatur für Ihren benutzerdefinierten IME festzulegen.

Kompatibilitätsanforderungen

Im Folgenden sind die grundlegenden Kompatibilitätsanforderungen für einen benutzerdefinierten IME aufgeführt.

IME muss mit Windows-Apps kompatibel sein

Verwenden Sie das Text Services Framework (TSF), um IMEs zu implementieren. Zuvor hatten Sie die Möglichkeit, den Eingabemethoden-Manager (IMM32) für Eingabedienste zu verwenden. Jetzt blockiert das System IMEs, die mithilfe des Eingabemethoden-Managers (IMM32) implementiert werden.

Wenn eine App gestartet wird, lädt TSF die IME-DLL für den IME, der derzeit vom Benutzer ausgewählt ist. Wenn ein IME geladen wird, unterliegt er den gleichen App-Containereinschränkungen wie die App. Beispielsweise kann ein IME nicht auf das Internet zugreifen, wenn eine App keinen Internetzugriff im Manifest angefordert hat. Dieses Verhalten stellt sicher, dass IMEs keine Sicherheitsverträge verletzen können.

TSF ist der Vermittler zwischen der App und Ihrem IME. TSF kommuniziert Eingabeereignisse an den IME und empfängt Eingabezeichen zurück vom IME, nachdem der Benutzer ein Zeichen ausgewählt hat.

Dieses Verhalten ist identisch mit früheren Versionen von Windows, aber das Laden in eine Windows-App wirkt sich auf die potenziellen Funktionen eines IME aus.

Wenn Ihr IME unterschiedliche Funktionen oder Ui zwischen Windows-Apps und Desktop-Apps bereitstellen muss, stellen Sie sicher, dass die von TSF geladene DLL überprüft, in welchen App-Typ es geladen wird. Rufen Sie die ITfThreadMgrEx::GetActiveFlags-Methode in Ihrem IME auf, und überprüfen Sie das TF_TMF_IMMERSIVEMODE Flag, sodass Ihr IME je nach Ergebnis unterschiedliche Anwendungslogik auslöst.

Windows-Apps unterstützen keine TTS-IMEs (Table Text Service).

Hinweis

Einige Tools zum Generieren von TTS-IMEs erzeugen IMEs, die von Windows als Schadsoftware gekennzeichnet sind.

IME muss mit der Taskleiste kompatibel sein

Es gibt keine Sprachenleiste zum Hosten von IME-Symbolen. Stattdessen wird auf der Taskleiste ein Eingabeindikator angezeigt, der die aktuelle Eingabeoption angibt. Der Eingabeindikator zeigt nur das IME-Markensymbol an, um das derzeit aktive IME anzuzeigen. Außerdem gibt es ein IME-Modussymbol, das links neben dem IME-Brandingsymbol für Benutzer angezeigt wird, um den am häufigsten verwendeten IME-Modusschalter auszuführen, z. B. das Aktivieren oder Deaktivieren des IME.

Der Eingabeindikator zeigt das IME-Brandingsymbol und das Modussymbol nur für kompatible IMEs an. IMEs, die nicht kompatibel sind, verfügen nicht über das Brandingsymbol und das Modussymbol, das in der Taskleiste angezeigt wird. Stattdessen zeigt der Eingabeindikator die Sprachkürzel anstelle des IME-Brandingsymbols an.

Speichern Sie die IME-Symbole in einer DLL- oder EXE-Datei anstelle einer eigenständigen .ico Datei. Der Entwurf von IME-Symbolen muss den Richtlinien entsprechen, die im folgenden Abschnitt zum Entwerfen der Benutzeroberfläche beschrieben sind.

IME-Brandinglogo

Der Eingabeindikator ruft das IME-Brandingsymbol aus der IME-DLL ab, indem er die vom IME definierte Ressourcen-ID verwendet, als die IME im System registriert wurde.

IME-Modussymbol

Einige IMEs müssen sich möglicherweise auf den Eingabeindikator verlassen, der auf der Taskleiste angezeigt wird, um das IME-Modus-Symbol anzuzeigen. In diesem Fall übergibt der IME das IME-Modussymbol mithilfe von GUID_LBI_INPUTMODE an den Eingabeindikator.

Beim Übergeben der IME-Modussymbole an die Eingabeanzeige auf der Taskleiste beträgt die Standardgröße des IME-Modussymbols 16 x 16 Pixel. Die UI-Skalierung folgt DPI.

Beim Übergeben des IME-Modussymbols an den Eingabeindikator für UAC (Benutzerkontensteuerung in Secure Desktop) beträgt die Standardgröße des IME-Modussymbols 20 x 20 Pixel. Die UI-Skalierung für das Symbol des IME-Modus auf UAC folgt dem PPI.

IME muss im App-Container funktionieren

Einige IME-Funktionen sind in einem App-Container betroffen.

  • Wörterbuchdateien – Häufig verfügen IMEs über schreibgeschützte Wörterbuchdateien, um Benutzereingaben bestimmten Zeichen zuzuordnen. Um von einem App-Container aus auf diese Dateien zuzugreifen, muss ihr IME sie unter den Verzeichnissen "Programme" oder "Windows" platzieren. Standardmäßig können diese Verzeichnisse aus einem App-Container gelesen werden, sodass IMEs auf Wörterbuchdateien zugreifen können, die an diesen Speicherorten gespeichert sind. Wenn Ihr IME die Wörterbuchdatei an einer anderen Stelle speichern muss, muss sie die Zugriffssteuerungslisten (Access Control Lists, ACL) der Wörterbuchdateien explizit bearbeiten, um den Zugriff von App-Containern zuzulassen.
  • Internetupdate – Wenn Ihr IME seine Wörterbücher mithilfe von Daten aus dem Internet aktualisieren muss, kann dies nicht zuverlässig innerhalb eines App-Containers geschehen, da der Internetzugriff nicht immer zulässig ist. Stattdessen sollte Ihr IME einen separaten Desktopprozess ausführen, der für die Aktualisierung der Wörterbuchdateien mit Daten aus dem Internet verantwortlich ist.
  • On-the-fly Learning – Wenn ein IME in einem App-Container mit Internetzugang ausgeführt wird, gibt es keine Einschränkung für die Endpunkte, mit denen der IME kommunizieren kann. In diesem Fall kann ein IME einen Cloudserver verwenden, um on-the-fly-Lerndienste bereitzustellen. Einige IMEs laden Benutzereingaben herunter und laden sie spontan hoch, während der Benutzer eingabet. Da der Internetzugriff in einem App-Container nicht garantiert ist, ist dies möglicherweise nicht immer zulässig.
  • Freigeben von Informationen zwischen Prozessen – IMEs müssen möglicherweise Daten über die Eingabeeinstellungen des Benutzers zwischen Apps freigeben, die sich in verschiedenen App-Containern befinden. Verwenden Sie einen Webdienst, um Daten zwischen Apps zu teilen.

Von Bedeutung

Wenn Sie versuchen, App-Containersicherheitsregeln zu umgehen, wird Ihr IME möglicherweise als Schadsoftware behandelt und blockiert.

IME und Bildschirmtastatur

Ihr IME muss sicherstellen, dass das UI des Kandidatenfensters und andere UI-Elemente nicht von der Bildschirmtastatur verdeckt werden. Die Bildschirmtastatur wird in einem höheren Z-Reihenfolge-Band als alle Apps angezeigt, und die IME-UI wird im gleichen Z-Reihenfolge-Band wie die App angezeigt, in der sie aktiv ist. Daher kann die Bildschirmtastatur die IME-Benutzeroberfläche überlappen und ausblenden. In den meisten Fällen sollte die App die Größe des Fensters ändern, um die Bildschirmtastatur zu berücksichtigen. Wenn die Größe einer App nicht geändert wird, kann der IME weiterhin die InputPane-API verwenden, um die Position der Bildschirmtastatur abzurufen. Der IME fragt die Location-Eigenschaft ab oder registriert einen Handler für die Ereignisse "Ein- und Ausblenden" der Bildschirmtastatur. Das Show-Event wird jedes Mal ausgelöst, wenn der Benutzer in ein Bearbeitungsfeld tippt, auch wenn die Bildschirmtastatur zurzeit angezeigt wird. Ihr IME kann diese API verwenden, um den Bildschirmbereich abzurufen, der von der Bildschirmtastatur belegt wird, bevor die Benutzeroberfläche des IME Kandidaten oder andere Elemente zeichnet, und die Benutzeroberfläche des IME anzupassen, um das Zeichnen unter der Bildschirmtastatur zu vermeiden.

Angeben des bevorzugten Bildschirmtastaturlayouts

Der IME kann angeben, welches Bildschirmtastaturlayout verwendet werden soll, und der IME ist für die Arbeit mit touchoptimierten Layouts aktiviert. Diese Funktionalität ist auf IMEs für die Eingabesprachen Koreanisch, Japanisch, Chinesisch (vereinfacht) und Chinesisch (traditionell) beschränkt.

Es gibt sieben Layouts, die von der Bildschirmtastatur unterstützt werden, von denen drei klassische Layouts sind und vier von denen touchoptimierte Layouts sind. Die klassischen Layouts sehen und verhalten sich wie eine physische Tastatur.

Alle drei klassischen Layouts dienen zum Eingeben von traditionellem Chinesisch in verschiedenen Formen:

  • Phonetische Eingabe
  • Changjie-Eingabe
  • Dayi-Eingabe

Zusätzlich zu den klassischen Layouts gibt es ein touchoptimiertes Layout für jedes der Eingabesprachen Koreanisch, Japanisch, Vereinfachtes Chinesisch und Traditionelles Chinesisch.

Um diese Funktionalität zu verwenden, muss Ihr IME die ITfFnGetPreferredTouchKeyboardLayout-Schnittstelle implementieren, die von der IME mithilfe der Text Services Framework ITfFunctionProvider-API exportiert wird.

Wenn Ihr IME die ITfFnGetPreferredTouchKeyboardLayout-Schnittstelle nicht unterstützt, führt die Verwendung des IME zum standardmäßigen klassischen Layout für die Sprache, die von der Touch-Tastatur angezeigt wird.

Wenn Ihr IME eines der klassischen Layouts als bevorzugtes Layout festlegen muss, ist keine zusätzliche Arbeit auf der IME-Seite erforderlich, die über die Unterstützung der ITfFnGetPreferredTouchKeyboardLayout- und ITfFunctionProvider-Schnittstellen hinaus hinausgeht. Im IME ist jedoch zusätzliche Arbeit erforderlich, um mit den touchoptimierten Layouts zu arbeiten, und dies wird im nächsten Abschnitt beschrieben.

Touchoptimiertes Layout

Die für die Toucheingabe optimierten Tastaturen für koreanische, japanische, vereinfachtes Chinesisch und chinesisch (traditionell) zeigen ein anderes Layout für IME-Ein- und IME-Aus-Konvertierungsmodi an. Es gibt eine Taste auf der Bildschirmtastatur, um den IME-Konvertierungsmodus auf Ein oder Aus festzulegen, aber der IME-Modus der Tastatur kann sich auch ändern, wenn sich der Fokus zwischen Bearbeitungssteuerelementen ändert.

Die für die Toucheingabe optimierten Tastaturen für die Eingabesprachen Japanisch, Vereinfachtes Chinesisch und Chinesisch (traditionell) enthalten eine Taste oder Tasten, die der IME verwendet, um durch Kandidatenseiten zu navigieren. Für Japanisch und vereinfachtes Chinesisch wird die Kandidatenseitentaste im touchoptimierten Layout angezeigt. Für traditionelles Chinesisch gibt es separate Schlüssel für die vorherigen und nächsten Kandidatenseiten.

Wenn diese Tasten gedrückt werden, ruft die Bildschirmtastatur die SendInput-Funktion auf, um die folgenden Unicode Private Use Area-Zeichen an die fokussierte Anwendung zu senden, die der IME abfangen und darauf reagieren kann:

  • Nächste Seite (0xF003) – Wird gesendet, wenn die Kandidatenseitentaste auf der touchoptimierten Tastatur für Japanisch und vereinfachtes Chinesisch gedrückt wird oder wenn die nächste Seitentaste auf der touchoptimierten Tastatur für traditionelles Chinesisch gedrückt wird.
  • Vorherige Seite (0xF004) – Gesendet, wenn entweder die Kandidatenseitentaste gleichzeitig mit der UMSCHALTTASTE auf der touchoptimierten Tastatur für Japanisch und vereinfachtes Chinesisch gedrückt wird oder wenn die vorherige Seitentaste auf der touchoptimierten Tastatur für traditionelles Chinesisch gedrückt wird.

Diese Zeichen werden als Unicode-Eingabe gesendet. Der nächste Absatz beschreibt, wie man die Zeicheninformationen während der Key Event Sink-Benachrichtigungen extrahiert, die das Text Services Framework IME empfängt. Diese Zeichenwerte werden in keiner Headerdatei definiert, daher müssen Sie sie in Ihrem Code definieren.

Um die Tastatureingabe abzufangen, muss Ihr IME als Tastenereignisempfänger registriert werden. Bei Unicode-Eingaben, die mithilfe der SendInput-Funktion generiert werden, enthält der WPARAM-Parameter der ITfKeyEventSink-Rückrufe (OnKeyDown, OnKeyUp, OnTestKeyDown, OnTestKeyUp) immer den virtuellen Schlüssel VK_PACKET und identifiziert das Zeichen nicht direkt.

Implementieren Sie die folgende Aufrufsequenz für den Zugriff auf das Zeichen:

// 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;
}

IME-Suchintegration

Stellen Sie Benutzern Suchfunktionen über den Suchvertrag und die Integration in das Suchfenster bereit.

Suchbereich und IME-Vorschläge
Suchbereich und IME-Vorschläge

Der Suchbereich ist ein zentraler Ort, an dem Benutzer Suchvorgänge in allen apps ausführen können. Für IME-Benutzer bietet Windows eine einzigartige Suchumgebung, mit der kompatible IMEs für eine höhere Effizienz und Benutzerfreundlichkeit in Windows integriert werden können.

Benutzer, die mit einem IME eingeben, das mit der Suche kompatibel ist, erhalten zwei Hauptvorteile:

  • Nahtlose Interaktion zwischen dem IME und der Suchoberfläche. IME-Kandidaten werden direkt im Suchfeld angezeigt, ohne die Suchvorschläge zu verdecken. Der Benutzer kann die Tastatur verwenden, um nahtlos zwischen dem Suchfeld, den IME-Konvertierungskandidaten und den Suchvorschlägen zu navigieren.
  • Schnellerer Zugriff auf relevante Ergebnisse und Vorschläge, die von Anwendungen bereitgestellt werden. Die App hat Zugriff auf alle aktuellen Konvertierungskandidaten, um relevantere Vorschläge bereitzustellen. Um Suchvorschläge besser zu priorisieren, werden Konvertierungen an Apps in der Reihenfolge der Relevanz übergeben. Benutzer finden und wählen das gewünschte Ergebnis aus, ohne zu konvertieren, indem sie einfach phonetisch eingeben.

Ein IME ist mit der integrierten Suchoberfläche kompatibel, wenn er die folgenden Kriterien erfüllt:

Wenn sie im Suchbereich aktiviert wird, wird ein kompatibler IME im UIless-Modus platziert und kann seine Benutzeroberfläche nicht anzeigen. Stattdessen sendet es Konvertierungskandidaten an Windows, das sie im Steuerelement der Inline-Bewerberliste anzeigt, wie im vorherigen Screenshot gezeigt.

Außerdem sendet der IME Kandidaten, die zum Ausführen der aktuellen Suche verwendet werden sollen. Diese Kandidaten können mit den Konvertierungskandidaten identisch sein, oder sie könnten auf die Suche zugeschnitten sein.

Gute Suchkandidaten erfüllen die folgenden Kriterien:

  • Kein Präfixüberlappung. Beispielsweise sind 北京大学 und北京 redundant, da eines ein Präfix des anderen ist.
  • Keine redundanten Kandidaten. Jeder redundante Kandidat ist für die Suche nicht nützlich, da er nicht beim Filtern von Ergebnissen hilft. Beispielsweise entspricht jedes Ergebnis, das mit 北京大学 übereinstimmt, auch mit 北京.
  • Kein Vorhersagekandidat, ausschließlich Umwandlung. Wenn der Benutzer beispielsweise "be" eingibt, kann der IME 北 als Kandidat zurückgeben, aber nicht 北京大学. In der Regel sind Vorhersagekandidaten zu restriktiv.

IMEs, die die Kriterien nicht erfüllen, sind nicht mit der Suchanzeige auf die gleiche Weise kompatibel wie andere Steuerelemente und können die Vorteile der Benutzeroberflächenintegration und Suchkandidaten nicht nutzen. Apps empfangen Abfragen erst, nachdem der Benutzer die Erstellung abgeschlossen hat.

Wenn eine App, die den Suchvertrag unterstützt, eine Abfrage empfängt, enthält das Abfrageereignis ein Array "queryTextAlternatives", das alle bekannten Alternativen enthält, die von den relevantesten (wahrscheinlich) bis zu den am wenigsten relevanten (unwahrscheinlich) bewertet werden.

Wenn Alternativen bereitgestellt werden, sollte die App jede Alternative als Abfrage behandeln und alle Ergebnisse zurückgeben, die mit einer der Alternativen übereinstimmen. Die App sollte sich so verhalten, als hätte der Benutzer mehrere Abfragen gleichzeitig ausgestellt, wobei im Wesentlichen eine "oder"-Abfrage an den Dienst ausgegeben wurde, der die Ergebnisse bereitstellt. Bei Leistungsüberlegungen beschränken Apps häufig den Abgleich auf 5 bis 20 der relevantesten Alternativen.

Richtlinien für das UI-Design

Alle IMEs müssen den Richtlinien für das Benutzererlebnis entsprechen, die unter Design und Code von Windows-Apps beschrieben sind.

Verwenden Sie keine haftigen Fenster

Ihre IME-Fenster sollten nur bei Bedarf angezeigt werden, und sie sollten nicht immer sichtbar sein. Wenn Benutzer nicht eingeben müssen, sollten IME-Fenster nicht angezeigt werden. Das IME-Fenster sollte kein Vollbildfenster sein. IME-Fenster sollten sich nicht gegenseitig überlappen. Die Fenster sollten in einem Windows-Stil entworfen und der UI-Skalierung folgen.

IME-Symbole

Es gibt zwei Arten von IME-Symbolen, Brandingsymbolen und Modussymbolen. Alle IME-Symbole müssen nur mit schwarzweißen Farben entworfen werden. Die neuen IME-Symbole leihen sich aus dem glyphischen Aussehen der Taskleistensymbole. Dieser Stil wurde erstellt, damit alle Sprachen es verwenden können, um den familiären Look zu ergänzen und gleichzeitig voneinander zu unterscheiden.

Das Dateiformat für IME-Symbole ist ICO. Sie müssen die folgenden Symbolgrößen angeben.

  • 16 x 16 Pixel
  • 20 x 20 Pixel
  • 24 x 24 Pixel
  • 32 x 32 Pixel
  • 40 x 40 Pixel
  • 48 x 48 Pixel

Stellen Sie sicher, dass 32-Bit-Symbole mit Alphakanal in allen Auflösungen bereitgestellt werden.

IME-Markensymbole werden durch ein weißes Feld definiert, in dem eine typografische Glyphe, die in einer modernen Schriftart gerendert wird, platziert wird. Jede definierende Glyphe wird von jedem Sprachteam ausgewählt. Die Glyphe ist schwarz. Das Feld enthält einen äußeren schwarzen Strich von 1 Pixel Breite bei 50% Deckkraft. "Neue" Versionen werden durch eine abgerundete Ecke oben links im Feld definiert.

IME-Modus-Symbole werden durch eine weiße typografische Glyphe in einer modernen Schriftart definiert, die einen äußeren schwarzen Strich von 1 Pixel Breite bei 50% Deckkraft besitzt.

Ikone Description
Beispiel für das IME-Markensymbol für traditionelles Chinesisch, ChangeJie. Beispiel für ein IME-Branding-Symbol für Traditional Chinese ChangeJie.
Beispiel-IME-Markensymbol für Traditional Chinese New ChangJie. Beispielsymbol für IME-Markensymbol für traditionelles chinesisches ChangeJie.
Symbol für den chinesischen Modus Beispielsymbol für den IME-Modus.

Eigenes Fenster

Um die Kandidaten-UI anzuzeigen, muss ein IME sein Fenster als eigenes Fenster festlegen, damit es über die aktuell ausgeführte App angezeigt werden kann. Verwenden Sie die ITfContextView::GetWnd-Methode, um das zuzuordnende Fenster abzurufen. Wenn GetWnd einen Fehler oder einen NULLHWND zurückgibt, rufen Sie die GetFocus-Funktion auf.

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

Interaktion des IME-Kandidatenfensters mit leichten Wegwerfen-Oberflächen

Das Schließmodell für Popupfenster wird als "Light Dismiss" bezeichnet, weil es für einen Benutzer einfach ist, solche Fenster zu schließen. Damit IMEs im Windows-Interaktionsmodell gut funktionieren, müssen die IME-Fenster am Modell für leichtes Schließen teilnehmen.

Um am Light Dismiss-Modell teilzunehmen, muss Ihr IME drei neue Windows-Ereignisse mithilfe der NotifyWinEvent-Funktion oder einer ähnlichen Funktion auslösen. Diese neuen Ereignisse sind:

  • EVENT_OBJECT_IME_SHOW – Lösen Sie dieses Ereignis aus, wenn der IME sichtbar ist.
  • EVENT_OBJECT_IME_HIDE – Lösen Sie dieses Ereignis aus, wenn der IME ausgeblendet wird.
  • EVENT_OBJECT_IME_CHANGE – Dieses Ereignis auslösen, wenn sich der IME bewegt oder die Größe ändert.

Deklarieren der Kompatibilität

IMEs deklarieren, dass sie kompatibel sind, indem sie die Kategorie GUID_TFCAT_TIPCAP_IMMERSIVESUPPORT für ihre IME mithilfe von ITfCategoryMgr::RegisterCategory registrieren.

Festlegen des standardmäßigen IME-Modus auf "Ein"

Wir bieten eine bessere UX für IMEs.

DPI-Skalierungsunterstützung für Desktopanwendungen

Die erweiterte DPI-Skalierungsunterstützung ermöglicht das Abfragen der deklarierten DPI-Sensibilisierungsebene jedes Desktopprozesses, um festzustellen, ob die Benutzeroberfläche skaliert werden muss. In einem Szenario mit mehreren Monitoren skaliert Windows die Benutzeroberfläche entsprechend für unterschiedliche DPI-Einstellungen auf jedem Monitor.

Da Ihr IME im Kontext des Prozesses jeder Anwendung ausgeführt wird, sollten Sie keine DPI-Sensibilisierungsstufe für Den IME deklarieren. Dadurch wird sichergestellt, dass Ihr IME auf der DPI-Sensibilisierungsebene des aktuellen Prozesses ausgeführt wird.

Um sicherzustellen, dass alle IME-UI-Elemente die Skalierungsparität mit den UI-Elementen des Prozesses haben, in dem Sie ausgeführt werden, müssen Sie entsprechend auf unterschiedliche DPI-Werte reagieren.

Hinweis

Um die Parität mit neuen Desktopanwendungen zu gewährleisten, sollte Ihr IME die Dpi-Sensibilisierung pro Monitor unterstützen, aber kein Bewusstseinsniveau selbst deklarieren. Das System bestimmt die entsprechenden Skalierungsanforderungen in jedem Szenario.

Ausführliche Informationen zur DPI-Skalierungsunterstützung für Desktopanwendungen finden Sie unter "Hoher DPI-Wert".

IME-Installation

Wenn Sie Ihren IME mithilfe von Microsoft Visual Studio erstellen, erstellen Sie mithilfe eines Drittanbieterinstallationsprogramms wie InstallShield von Flexera Software eine Installationsumgebung für Ihren IME.

Die folgenden Schritte zeigen, wie Sie InstallShield zum Erstellen eines Setupprojekts für Ihre IME-DLL verwenden.

  • Installieren Sie Visual Studio.
  • Starten Sie Visual Studio.
  • Zeigen Sie im Menü "Datei " auf "Neu ", und wählen Sie "Projekt" aus. Das Dialogfeld "Neues Projekt " wird geöffnet.
  • Navigieren Sie im linken Bereich zu "Vorlagen > Andere Projekttypen > einrichten und bereitstellen", klicken Sie auf "InstallShield Limited Edition aktivieren", und klicken Sie auf "OK". Befolgen Sie die Installationsanweisungen.
  • Starten Sie Visual Studio neu.
  • Öffnen Sie die IME-Lösungsdatei (.sln).
  • Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, zeigen Sie auf "Hinzufügen", und wählen Sie "Neues Projekt" aus. Das Dialogfeld " Neues Projekt hinzufügen " wird geöffnet.
  • Navigieren Sie im linken Strukturansichtssteuerelement zu "Templates > Other Project Types > InstallShield Limited Edition".
  • Klicken Sie im mittleren Fenster auf InstallShield Limited Edition Project.
  • Geben Sie im Textfeld "Name " "SetupIME" ein, und klicken Sie auf "OK".
  • Klicken Sie im Dialogfeld "Projekt-Assistent " auf "Anwendungsinformationen".
  • Geben Sie den Firmennamen und die anderen Felder ein.
  • Klicken Sie auf "Anwendungsdateien".
  • Klicken Sie im linken Bereich mit der rechten Maustaste auf den Ordner [INSTALLDIR], und wählen Sie "Neuer Ordner" aus. Nennen Sie den Ordner "Plugins".
  • Klicken Sie auf "Dateien hinzufügen". Navigieren Sie zu Ihrer IME-DLL, und fügen Sie sie dem Ordner "Plugins " hinzu. Wiederholen Sie diesen Schritt für das IME-Wörterbuch.
  • Klicken Sie mit der rechten Maustaste auf die IME-DLL, und wählen Sie "Eigenschaften" aus. Das Dialogfeld Eigenschaften wird geöffnet.
  • Klicken Sie im Dialogfeld "Eigenschaften " auf die Registerkarte "COM& .NET-Einstellungen ".
  • Wählen Sie unter "Registrierungstyp" die Option "Selbstregistrierung" aus, und klicken Sie auf "OK".
  • Erstellen Sie die Lösung. Die IME-DLL wird erstellt, und InstallShield erstellt eine setup.exe Datei, mit der Benutzer Ihre IME unter Windows installieren können.

Rufen Sie zum Erstellen Ihrer eigenen Installationserfahrung die ITfInputProcessorProfileMgr::RegisterProfile-Methode auf, um den IME während der Installation zu registrieren. Schreiben Sie Registrierungseinträge nicht direkt.

Wenn der IME unmittelbar nach der Installation verwendet werden muss, rufen Sie InstallLayoutOrTip auf, um den IME zu den vom Benutzer aktivierten Eingabemethoden hinzuzufügen, indem Sie das folgende Format für den psz-Parameter verwenden:

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

IME-Barrierefreiheit

Implementieren Sie die folgende Konvention, damit Ihre IMEs die Barrierefreiheitsanforderungen erfüllen und mit der Sprachausgabe funktionieren können. Um Kandidatenlisten barrierefrei zu machen, müssen Ihre IMEs dieser Konvention folgen.

  • Die Kandidatenliste muss eine UIA_AutomationIdPropertyId haben, die gleich "IME_Candidate_Window" für Listen der Konvertierungskandidaten oder "IME_Prediction_Window" für Listen der Vorhersagekandidaten ist.
  • Wenn die Kandidatenliste angezeigt und ausgeblendet wird, löst sie Ereignisse vom Typ UIA_MenuOpenedEventId bzw. UIA_MenuClosedEventId aus.
  • Wenn sich der aktuelle ausgewählte Kandidat ändert, löst die Kandidatenliste eine UIA_SelectionItem_ElementSelectedEventId aus. Das ausgewählte Element sollte eine Eigenschaft UIA_SelectionItemIsSelectedPropertyId gleich TRUE aufweisen.
  • Die UIA_NamePropertyId für jedes Element in der Kandidatenliste muss der Name des Kandidaten sein. Optional können Sie zusätzliche Informationen bereitstellen, um Kandidaten durch UIA_HelpTextPropertyId zu disambiguieren.