I am not sure if this is what you want, but here an example I found in API-Guide: CODE'This example was created by A.E.Veltstra
'This fucntion changes the locale and as a result, the keyboardlayout gets adjusted
'parameters for api's 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" Const LANG_EN_US As String = "00000409" 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 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 Private Sub Form_Load() 'change the current keybour layout to 'English - US' SetKbLayout LANG_EN_US End Sub Borislav Borissov VFP9 SP1, SQL Server 2000/2005. MVP VFP |
|