Freigeben über


LoadKeyboardLayoutW-Funktion (winuser.h)

Lädt einen neuen Eingabe-Gebietsschemabezeichner (früher als Tastaturlayout bezeichnet) in das System.

Vor Windows 8: Mehrere Eingabegebietsbezeichner können gleichzeitig geladen werden, aber nur einer pro Prozess ist gleichzeitig aktiv. Indem mehrere Eingabe-Gebietsschemabezeichner geladen werden, sind schnelle Wechsel zwischen den Bezeichnern möglich.

Ab Windows 8: Der Eingabegebietsschemabezeichner wird für das gesamte System geladen. Diese Funktion hat keine Auswirkung, wenn der aktuelle Prozess das Fenster mit Tastaturfokus nicht besitzt.

Syntax

HKL LoadKeyboardLayoutW(
  [in] LPCWSTR pwszKLID,
  [in] UINT    Flags
);

Parameter

[in] pwszKLID

Typ: LPCTSTR

Der Name des zu ladenden Eingabegebietsschemabezeichners. Dieser Name ist eine Zeichenfolge, die aus dem Hexadezimalwert des Sprachbezeichners (niedriges Wort) und einem Gerätebezeichner (hohes Wort) besteht. Beispielsweise verfügt US-Englisch über einen Sprachbezeichner von 0x0409, sodass das primäre Us.S. English-Layout "00000409" heißt. Varianten des us-englischen Layouts (z. B. das Dvorak-Layout) heißen "00010409", "00020409" usw.

Eine Liste der Eingabelayouts, die mit Windows bereitgestellt werden, finden Sie unter Tastaturbezeichner und Eingabemethoden-Editoren für Windows.

[in] Flags

Typ: UINT

Gibt an, wie der Eingabegebietsschemabezeichner geladen werden soll. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
KLF_ACTIVATE
0x00000001
Vor Windows 8: Wenn der angegebene Eingabegebietsschemabezeichner nicht bereits geladen ist, lädt und aktiviert die Funktion den Eingabegebietsschemabezeichner für den aktuellen Thread.

Ab Windows 8: Wenn der angegebene Eingabegebietsbezeichner nicht bereits geladen ist, lädt und aktiviert die Funktion den Eingabegebietsschemabezeichner für das System.

KLF_NOTELLSHELL
0x00000080
Vor Windows 8: Verhindert, dass eine ShellProc-Hookprozedur einen HSHELL_LANGUAGE Hookcode empfängt, wenn der neue Eingabegebietsschemabezeichner geladen wird. Dieser Wert wird in der Regel verwendet, wenn eine Anwendung mehrere Eingabegebietsschemabezeichner nacheinander lädt. Das Anwenden dieses Werts auf alle Bis auf den letzten Eingabegebietsschemabezeichner verzögert die Verarbeitung der Shell, bis alle Eingabegebietsschemabezeichner hinzugefügt wurden.

Ab Windows 8: In diesem Szenario wird der letzte Eingabegebietsschemabezeichner für das gesamte System festgelegt.

KLF_REORDER
0x00000008
Vor Windows 8: Verschiebt den angegebenen Eingabegebietsschemabezeichner in den Kopf der Liste der Eingabegebietsschemabezeichner, sodass dieser Gebietsschemabezeichner der aktive Gebietsschemabezeichner für den aktuellen Thread ist. Mit diesem Wert wird die Liste der Eingabegebietsschemabezeichner neu sortiert, auch wenn KLF_ACTIVATE nicht angegeben ist.

Ab Windows 8: Verschiebt den angegebenen Eingabegebietsschemabezeichner in den Kopf der Eingabegebietsbezeichnerliste, sodass dieser Gebietsschemabezeichner der aktive Gebietsschemabezeichner für das System ist. Mit diesem Wert wird die Liste der Eingabegebietsschemabezeichner neu sortiert, auch wenn KLF_ACTIVATE nicht angegeben ist.

KLF_REPLACELANG
0x00000010
Wenn der neue Eingabegebietsschemabezeichner über denselben Sprachbezeichner wie ein aktueller Eingabegebietsschemabezeichner verfügt, ersetzt der neue Eingabegebietsschemabezeichner den aktuellen als Eingabegebietsschemabezeichner für diese Sprache. Wenn dieser Wert nicht angegeben wird und die Eingabegebietsschemabezeichner dieselben Sprachbezeichner aufweisen, wird der aktuelle Eingabegebietsschemabezeichner nicht ersetzt, und die Funktion gibt NULL zurück.
KLF_SUBSTITUTE_OK
0x00000002
Ersetzt den angegebenen Eingabegebietsschemabezeichner durch ein anderes gebietsschema, das vom Benutzer bevorzugt wird. Das System beginnt mit diesem Flagsatz, und es wird empfohlen, dass Ihre Anwendung immer dieses Flag verwendet. Die Ersetzung erfolgt nur, wenn der Registrierungsschlüssel HKEY_CURRENT_USER\Keyboard Layout\Substitutes explizit ein Ersetzungsgebietsschema definiert. Wenn der Schlüssel beispielsweise den Wertnamen "00000409" mit dem Wert "00010409" enthält, wird beim Laden des US-Layouts ("00000409") stattdessen das Layout united States-Dvorak ("00010409") geladen. Das System verwendet beim Starten KLF_SUBSTITUTE_OK , und es wird empfohlen, dass alle Anwendungen diesen Wert beim Laden von Eingabegebietsschemabezeichnern verwenden, um sicherzustellen, dass die Benutzereinstellung ausgewählt ist.
KLF_SETFORPROCESS
0x00000100
Vor Windows 8: Dieses Flag ist nur für KLF_ACTIVATE gültig. Aktiviert den angegebenen Eingabegebietsschemabezeichner für den gesamten Prozess und sendet die WM_INPUTLANGCHANGE Nachricht an das Fenster Fokus oder Aktiv des aktuellen Threads. In der Regel aktiviert LoadKeyboardLayout einen Eingabegebietsschemabezeichner nur für den aktuellen Thread.

Ab Windows 8: Dieses Flag wird nicht verwendet. LoadKeyboardLayout aktiviert immer einen Eingabegebietsbezeichner für das gesamte System, wenn der aktuelle Prozess das Fenster mit Tastaturfokus besitzt.

KLF_UNLOADPREVIOUS
Dieses Flag wird nicht unterstützt. Verwenden Sie stattdessen die Funktion UnloadKeyboardLayout .

Rückgabewert

Typ: HKL

Wenn die Funktion erfolgreich ist, ist der Rückgabewert der Eingabegebietsschemabezeichner, der dem in pwszKLID angegebenen Namen entspricht. Wenn kein übereinstimmende Gebietsschema verfügbar ist, ist der Rückgabewert die Standardsprache des Systems.

Wenn bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Dies kann auftreten, wenn die Layoutbibliothek aus dem Anwendungsverzeichnis geladen wird.

Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Der Eingabegebietsschemabezeichner ist ein umfassenderes Konzept als ein Tastaturlayout, da es auch einen Spracherkennungskonverter, eine Eingabemethode Editor (IME) oder eine andere Form der Eingabe umfassen kann.

Eine Anwendung kann und wird in der Regel den Standard-Gebietsschemabezeichner oder die IME für eine Sprache laden und kann dies tun, indem nur eine Zeichenfolgenversion des Sprachbezeichners angegeben wird. Wenn eine Anwendung ein bestimmtes Gebietsschema oder eine IME laden möchte, sollte sie die Registrierung lesen, um den spezifischen Eingabegebietsschemabezeichner zu bestimmen, der an LoadKeyboardLayout übergeben werden soll. In diesem Fall aktiviert eine Anforderung zum Aktivieren des Standard-Gebietsschemabezeichners für ein Gebietsschema das erste übereinstimmende Gebietsschema. Ein bestimmter IME sollte mithilfe eines expliziten Eingabegebietsbezeichners aktiviert werden, der von GetKeyboardLayout oder LoadKeyboardLayout zurückgegeben wird.

Vor Windows 8: Diese Funktion wirkt sich nur auf das Layout für den aktuellen Prozess oder Thread aus.

Ab Windows 8: Diese Funktion wirkt sich auf das Layout des gesamten Systems aus.

Hinweis

Der winuser.h-Header definiert LoadKeyboardLayout als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll

Weitere Informationen

ActivateKeyboardLayout

Konzept

GetKeyboardLayoutName

Tastatureingabe

MAKELANGID

Andere Ressourcen

Referenz

UnloadKeyboardLayout