Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

vb6 idiomas teclado

Estas en el tema de vb6 idiomas teclado en el foro de Visual Basic clásico en Foros del Web. Hola Les cuento Tengo un sistemita con 14 idiomas los cuales los tego instalados a todos en el sistema de windows xp La pregunta es ...
  #1 (permalink)  
Antiguo 12/11/2011, 10:21
 
Fecha de Ingreso: mayo-2008
Mensajes: 224
Antigüedad: 16 años
Puntos: 4
vb6 idiomas teclado

Hola

Les cuento

Tengo un sistemita con 14 idiomas los cuales los tego instalados a todos en el sistema de windows xp

La pregunta es saber la constante de algunos idiomas. Por ejemplo tengo esto

Public Const LANG_ENGLISH As String = "00000409"

Como puedo saber las constantes de todos lo idiomas que tengo instalados, para poder usarlos desde vb6?

Busque por todos lados y la verdad no lo encuentro.

Gracias de antemano !!!

Haaa, es para cambiar el lenguaje del teclado, cosa que si voy a un idioma especifico el teclado cambie tambien de idioma.
  #2 (permalink)  
Antiguo 13/11/2011, 04:43
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
Respuesta: vb6 idiomas teclado

Hola navegando en internet vi esto no se si te sirve:

Cita:
' * Las dos combinaciones siguientes de Id. de idioma primario e Id. de
' * subidioma tienen una semántica especial:
' *
' * Id. idioma primario Id. subidioma Resultado
' * ------------------- --------------- ------------------------
' * LANG_NEUTRAL SUBLANG_NEUTRAL Idioma neutro
' * LANG_NEUTRAL SUBLANG_DEFAULT Idioma predeterminado del usuario
' * LANG_NEUTRAL SUBLANG_SYS_DEFAULT Idioma predeterminado del sistema
' */
'
' * Id. de los idiomas primarios.
' */
Const LANG_NEUTRAL = &H0

Const LANG_BULGARIAN = &H2
Const LANG_CHINESE = &H4
Const LANG_CROATIAN = &H1A
Const LANG_CZECH = &H5
Const LANG_DANISH = &H6
Const LANG_DUTCH = &H13
Const LANG_ENGLISH = &H9
Const LANG_FINNISH = &HB
Const LANG_FRENCH = &HC
Const LANG_GERMAN = &H7
Const LANG_GREEK = &H8
Const LANG_HUNGARIAN = &HE
Const LANG_ICELANDIC = &HF
Const LANG_ITALIAN = &H10
Const LANG_JAPANESE = &H11
Const LANG_KOREAN = &H12
Const LANG_NORWEGIAN = &H14
Const LANG_POLISH = &H15
Const LANG_PORTUGUESE = &H16
Const LANG_ROMANIAN = &H18
Const LANG_RUSSIAN = &H19
Const LANG_SLOVAK = &H1B
Const LANG_SLOVENIAN = &H24
Const LANG_SPANISH = &HA
Const LANG_SWEDISH = &H1D
Const LANG_TURKISH = &H1F

'
' * Id. de los subidiomas.
' *
' * El nombre que aparece inmediatamente a continuación de SUBLANG_
' * indica el Id. del idioma primario con el que se puede combinar el Id.
' * de ese subidioma para formar un Id. de idioma válido.
' */
Const SUBLANG_NEUTRAL = &H0 ' idioma neutro
Const SUBLANG_DEFAULT = &H1 ' predeterminado del usuario
Const SUBLANG_SYS_DEFAULT = &H2 ' predeterminado del sistema

Const SUBLANG_CHINESE_TRADITIONAL = &H1 ' Chino (Taiwan)
Const SUBLANG_CHINESE_SIMPLIFIED = &H2 ' Chino (RP China)
Const SUBLANG_CHINESE_HONGKONG = &H3 ' Chino (Hong Kong)
Const SUBLANG_CHINESE_SINGAPORE = &H4 ' Chino (Singapur)
Const SUBLANG_DUTCH = &H1 ' Holandés
Const SUBLANG_DUTCH_BELGIAN = &H2 ' Holandés (Belga)
Const SUBLANG_ENGLISH_US = &H1 ' Inglés (EE.UU.)
Const SUBLANG_ENGLISH_UK = &H2 ' Inglés (Reino Unido)
Const SUBLANG_ENGLISH_AUS = &H3 ' Inglés (Australiano)
Const SUBLANG_ENGLISH_CAN = &H4 ' Inglés (Canadiense)
Const SUBLANG_ENGLISH_NZ = &H5 ' Inglés (Nueva Zelanda)
Const SUBLANG_ENGLISH_EIRE = &H6 ' Inglés (Irlanda)
Const SUBLANG_FRENCH = &H1 ' Francés
Const SUBLANG_FRENCH_BELGIAN = &H2 ' Francés (Belga)
Const SUBLANG_FRENCH_CANADIAN = &H3 ' Francés (Canadiense)
Const SUBLANG_FRENCH_SWISS = &H4 ' Francés (Suiza)
Const SUBLANG_GERMAN = &H1 ' Alemán
Const SUBLANG_GERMAN_SWISS = &H2 ' Alemán (Suiza)
Const SUBLANG_GERMAN_AUSTRIAN = &H3 ' Alemán (Austria)
Const SUBLANG_ITALIAN = &H1 ' Italiano
Const SUBLANG_ITALIAN_SWISS = &H2 ' Italiano (Suiza)
Const SUBLANG_NORWEGIAN_BOKMAL = &H1 ' Noruego (Bokma)
Const SUBLANG_NORWEGIAN_NYNORSK = &H2 ' Noruego (Nynorsk)
Const SUBLANG_PORTUGUESE = &H2 ' Portugués
Const SUBLANG_PORTUGUESE_BRAZILIAN = &H1 ' Portugués (Brasil)
Const SUBLANG_SPANISH = &H1 ' Español (Castellano)
Const SUBLANG_SPANISH_MEXICAN = &H2 ' Español (México)
Const SUBLANG_SPANISH_MODERN = &H3 ' Español (Moderno)

'
' * Id. de orden.
' *
' */
Const SORT_DEFAULT = &H0 ' Orden predeterminado

Const SORT_JAPANESE_XJIS = &H0 ' Orden Japonés0xJIS
Const SORT_JAPANESE_UNICODE = &H1 ' Orden Unicode japonés

Const SORT_CHINESE_BIG5 = &H0 ' Orden chino BIG5
Const SORT_CHINESE_UNICODE = &H1 ' Orden Unicode chino

Const SORT_KOREAN_KSC = &H0 ' Orden coreano KSC
Const SORT_KOREAN_UNICODE = &H1 ' Orden Unicode coreano

Por cierto lo saque de:

http://www.canalvisualbasic.net/foro...ra-win32-7746/

salu2......
  #3 (permalink)  
Antiguo 13/11/2011, 16:00
 
Fecha de Ingreso: mayo-2008
Mensajes: 224
Antigüedad: 16 años
Puntos: 4
Respuesta: vb6 idiomas teclado

Hola A.H.H

Te cuento, probe con el codigo como me pasastes y al verdad no me funciono, encontre esto:

Código HTML:
'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
Que me funciono barbaro. Los numeros de los idiomas los encontre en el regedit.
Pero ete aqui que me surgio otro inconveniente.

En tiempo de ejecucion, el teclado cambia el idioma sin problemas, pero el textbox no se inmuta del cambio, es como que no entiende de que hablo, pero el Chino, Coreano y Japones, me lo trabaja sin problemas.
Los idiomas con los que tengo inconveniente es con el Arabe el Hindu y el Griego
Busque y rebusque y no logro encontrarle la vuelta. No soy un genio en esto y es evidente de que me estoy olvidando de algo.
Si abro el block de notas me escribe sin problemas en todos los idiomas, pero con el textobx del visual no. Probe cambiando las fuentes por fuentes TruType y las otras y nada.
Yo no quiero cambiar todo el sistema operativo solo que los textbox me permitan ingresar texto en estos idiomas

Tenes alguna idea de que estoy dejando de lado?

Desde ya te agradesco el codigo que me pasastes, que la verdad no encontraba nada, gracias gracias gracias !!!!
  #4 (permalink)  
Antiguo 14/11/2011, 15:13
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
Respuesta: vb6 idiomas teclado

Hola no estoy muy puesto en lo del teclado pero encontre dos paginas que igual te sirven pero estan en ingles.

Una es un listado de codigos de idiomas regionales

la otra es la explicacion de la api loadkeyboardlayout con sus diferentes flags.
que pienso que igual tienes que activar algun flag concreto para que te funcione bien tu codigo ¿no?

la de los codigos--> http://www.science.co.il/language/Locale-Codes.asp

la de la api ----> http://www.ex-designz.net/apidetail.asp?api_id=499


tambien encontre estas constantes para los flags de la api loadkeyboardlayout:

Const KLF_ACTIVATE As Long = &H1
Const KLF_NOTELLSHELL As Long = &H80
Const KLF_REORDER As Long = &H8
Const KLF_REPLACELANG As Long = &H10
Const KLF_RESET As Long = &H40000000
Const KLF_SETFORPROCESS As Long = &H100
Const KLF_SHIFTLOCK As Long = &H10000
Const KLF_SUBSTITUTE_OK As Long = &H2
Const KLF_UNLOADPREVIOUS As Long = &H4



Excepto el primero que activa el layout, los demas no se lo que hacen....
en la pagina que te di viene la explicacion en ingles


salu2
  #5 (permalink)  
Antiguo 19/11/2011, 11:52
 
Fecha de Ingreso: mayo-2008
Mensajes: 224
Antigüedad: 16 años
Puntos: 4
Respuesta: vb6 idiomas teclado

Hola AHH

Te cuento, cambie el codigo anterior por el que me pasastes primero.

Y me funciona barbaro.

Lo que si, guarde las cosntantes en una base de datos para poder ir cambiandolas dependiendo del idioma en el que van a escribir.

Pero tuve muchos problemas con los controles, ya que tienen que tener la capacidad de leer y guardar UNICODE, cosa que los que trae visual no me funicionan.

Tambien probe con los controls 5 pero tampoco me funcionaron.

Termine bajando unos controles ocx, que la verdad no se cual es el alcance en cuanto a licencia, por ahora funcionan.

Te hago una pregunta quizas sabes y asi evito abrir otro tema, sino lo abro, el formulario que trabaja con las apis y cambia los idiomas, tiene varios bucles for.

Osea lee todos los idiomas disponibles que tengo habilitados y crea unos controles enlazados a cada idioma.
Al mismo tiempo tengo que generar el arbol de categorias dependiendo el idioma seleccionado ( que lo ofrece el control creado con el for anterior) y mostrarlo en el treeview y eso lo hace cada vez que seleccione un idioma diferente.
Cuando entra en el ABM de la categoria y el idioma seleccionado, cambia la api para darle al usuario el teclado correspondiente al idioma.

Aca la pregunta, varios bucles for, puden generar un conflicto como para que se cierre el sistema sin darte ninguna explicacion?

Ha por otro lado queria contarte que me enseñastes un monto !!! . A pesar de estar complicada con esto de los idiomas , aprendi muchisimo leyendo los links que me enviastes. Muchas pero muchas gracias !!!!!

Pd. como siempre, la palabra "gracias" es muy pequeña para devolver toda la gratitud recibida por personas como vos que integran este foro. Gracias de nuevo
  #6 (permalink)  
Antiguo 19/11/2011, 15:26
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
Respuesta: vb6 idiomas teclado

Hola, way2park

Pues para saber si tienes algun error en tu aplicacion, puedes probar en visual basic arriba de la ventana en el menu donde dice Depuracion, eliges paso a paso por instrucciones y te va a ir ejecutando la aplicacion paso a paso, cuando se para en una instruccion o comando pulsas repetidamente la tecla F8 para que siga corriendo tu aplicacion y vas viendo haber si localizas el error.

Pd. Gracias por las palabras dedicadas!! Me gusta mucho ayudar en programacion!!



salu2

Última edición por A.H.H; 19/11/2011 a las 16:09

Etiquetas: idiomas, teclado, vb, vb6
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:09.