VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Change the keyboard layout on the fly without the pre-defined SHIFT+ALT keys.

by Taklikar AH (3 Submissions)
Category: Windows System Services
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Tue 25th December 2001
Date Added: Mon 8th February 2021
Rating: (1 Votes)

Change the keyboard layout on the fly without the pre-defined SHIFT+ALT keys.

API Declarations


Const KL_NAMELENGTH As Long = 9 'length of the keyboardbuffer
Const KLF_ACTIVATE As Long = &H1 'activate the layout

'the language constants
Const LANG_NL_STD As String = "00000413"
Public Const LANG_EN_US As String = "00000409" 'English
Public Const LANG_AR As String = "00000401" 'Arabic
Const LANG_DU_STD As String = "00000407"
Const LANG_FR_STD As String = "0000040C"

'api's to adjust the keyboardlayout
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal Flags As Long) As Long
'============

Rate Change the keyboard layout on the fly without the pre-defined SHIFT+ALT keys.




Public Function SetKbLayout(strLocaleId As String) As Boolean
    'Changes the KeyboardLayout
    'Returns TRUE when the KeyboardLayout was adjusted properly, FALSE otherwise
    'If the KeyboardLayout isn't installed, this function will install it for you
    On Error Resume Next
    Dim strLocId As String 'used to retrieve current KeyboardLayout
    Dim strMsg As String   'used as buffer
    Dim lngErrNr As Long   'receives the API-error number

  'create a buffer
  strLocId = String(KL_NAMELENGTH, 0)
  'retrieve the current KeyboardLayout
  GetKeyboardLayoutName strLocId
  'Check whether the current KeyboardLayout and the
  'new one are the same
  If strLocId = (strLocaleId & Chr(0)) Then
    'If they're the same, we return immediately
    SetKbLayout = True
  Else
    'create buffer
    strLocId = String(KL_NAMELENGTH, 0)
    'load and activate the layout for the current thread
    strLocId = LoadKeyboardLayout((strLocaleId & Chr(0)), KLF_ACTIVATE)
    If IsNull(strLocId) Then  'returns NULL when it fails
      SetKbLayout = False
    Else 'check again
      'create buffer
      strLocId = String(KL_NAMELENGTH, 0)
      'retrieve the current layout
      GetKeyboardLayoutName strLocId
      If strLocId = (strLocaleId & Chr(0)) Then
        SetKbLayout = True
      Else
        SetKbLayout = False
      End If
    End If
  End If
End Function


Download this snippet    Add to My Saved Code

Change the keyboard layout on the fly without the pre-defined SHIFT+ALT keys. Comments

No comments have been posted about Change the keyboard layout on the fly without the pre-defined SHIFT+ALT keys.. Why not be the first to post a comment about Change the keyboard layout on the fly without the pre-defined SHIFT+ALT keys..

Post your comment

Subject:
Message:
0/1000 characters