LoadKeyboardLayoutA-Funktion (winuser.h)

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

Vor Windows 8: Mehrere Eingabegebietsgebietsbezeichner 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 nicht im Besitz des Fensters mit Tastaturfokus ist.

Syntax

HKL LoadKeyboardLayoutA(
  [in] LPCSTR 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 weist US-Englisch den Sprachbezeichner 0x0409 auf, sodass das primäre us-englische 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 Eingabegebietsgebietsbezeichner geladen werden soll. Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen.

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

Ab Windows 8: Wenn der angegebene Eingabegebietsgebietsbezeichner noch nicht 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 Eingabegebietsgebietsbezeichner geladen wird. Dieser Wert wird in der Regel verwendet, wenn eine Anwendung mehrere Eingabegebietsgebietsbezeichner nacheinander lädt. Durch das Anwenden dieses Werts auf alle bis auf den letzten Eingabegebietsgebietsbezeichner wird die Verarbeitung der Shell verzögert, 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 Eingabegebietsgebietsbezeichnerliste, sodass dieser Gebietsschemabezeichner der aktive Gebietsschemabezeichner für den aktuellen Thread ist. Dieser Wert ordnet die Eingabegebietsbezeichnerliste neu an, auch wenn KLF_ACTIVATE nicht angegeben wird.

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

KLF_REPLACELANG
0x00000010
Wenn der neue Eingabegebietsgebietsbezeichner über denselben Sprachbezeichner wie ein aktueller Eingabegebietsbezeichner verfügt, ersetzt der neue Eingabegebietsgebietsbezeichner den aktuellen als Eingabegebietsgebietsbezeichner für diese Sprache. Wenn dieser Wert nicht angegeben wird und die Eingabegebietsschemabezeichner die gleichen Sprachbezeichner haben, wird der aktuelle Eingabegebietsgebietsbezeichner nicht ersetzt, und die Funktion gibt NULL zurück.
KLF_SUBSTITUTE_OK
0x00000002
Ersetzt den angegebenen Eingabegebietsgebietsbezeichner durch ein anderes Gebietsschema, das vom Benutzer bevorzugt wird. Das System beginnt mit diesem Flag, 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 United States-Dvorak-Layout ("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 Einstellung des Benutzers ausgewählt ist.
KLF_SETFORPROCESS
0x00000100
Vor Windows 8: Dieses Flag ist nur mit KLF_ACTIVATE gültig. Aktiviert den angegebenen Eingabegebietsgebietsbezeichner für den gesamten Prozess und sendet die WM_INPUTLANGCHANGE Nachricht an das Fokus- oder Aktivfenster 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 Eingabegebietsschemabezeichner 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 UnloadKeyboardLayout-Funktion .

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 er auch einen Spracherkennungskonverter, eine Eingabemethode Editor (IME) oder jede andere Form der Eingabe umfassen kann.

Eine Anwendung kann und wird in der Regel den Standard-Gebietsschemabezeichner oder den 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 einen IME laden möchte, sollte sie die Registrierung lesen, um den spezifischen Eingabegebietsgebietsbezeichner zu bestimmen, der an LoadKeyboardLayout übergeben werden soll. In diesem Fall wird das erste übereinstimmende Gebietsschema durch eine Anforderung zum Aktivieren des Standard-Gebietsschemabezeichners für ein Gebietsschema aktiviert. Ein bestimmter IME sollte mithilfe eines expliziten Gebietsschemabezeichners 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 Code, der nicht Codierungsneutral ist, 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 (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll

Weitere Informationen

ActivateKeyboardLayout

Konzept

GetKeyboardLayoutName

Tastatureingabe

MAKELANGID

Andere Ressourcen

Referenz

UnloadKeyboardLayout