Rubrik: Maus & Tastatur · Tastatursteuerung | VB-Versionen: VB4, VB5, VB6 | 21.10.01 |
Tastaturlayout per Code umstellen Mit einer einzigen WinAPI-Funktion lässt sich zwischen verschiedenen Tastaturlayouts umschalten. | ||
Autor: Senior | Bewertung: | Views: 21.236 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
In manchen Anwendungsprogrammen ist es sinnvoll oder sogar notwendig zeitweise verschiedene Sprach-Zeichensätze zu verwenden. Dies lässt sich ja in aller Regel über die Tastenkombination Umsch+linke ALT-Taste bewerkstelligen.
Nehmen wir an, Sie haben einen Vokabeltrainer programmiert. Immer wenn das Eingabefeld für das Fremdwort den Fokus besitzt, soll ein anderes Tastaturlayout verwendet werden - und das natürlich ohne immer erst die erwähnte Tastenkombination selbst drücken zu müssen.
Also muss wieder einmal das Windows-API mit einer entsprechenden Funktion "herhalten".
' zunächst die benötigte API-Deklaration Private Declare Function ActivateKeyboardLayout Lib "user32" ( _ ByVal HKL As Long, _ ByVal flags As Long) As Long Const VK_HKL = 0 Const VK_FLAGSR = 1 ' Tastenlayout Russisch Const VK_FLAGSD = 0 ' Tastenlayout Deutsch
Erhält nun das besagte Eingabefeld den Fokus, wird das Tastaturlayout automatisch auf Russisch umgestellt:
Private Sub txtFremdwort_GotFocus() ' Feld in kyrillisch ActivateKeyboardLayout VK_HKL, VK_FLAGSR End Sub
Verliert das Eingabefeld den Fokus, wird einfach wieder auf das deutsche Tastaturlayout umgestellt:
Private Sub txtFremdwort_LostFocus() ' wieder deutsch einstellen ActivateKeyboardLayout VK_HKL, VK_FLAGSD End Sub