Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Помогите найти API функцию


Автор: cardinal 8.8.2002, 20:26
Привет, всем!
Тут небольшая проблема, но пока не знаю как решить. :bored
Я хотел бы в своей маленькой программке сделать флажок, который показывает какой язык раскладки клавиатуры установлен (русский или английский). Для этого его надо как то определить и при его изменении (какое может быть произведено , как известно, разными комбинациями клавиш) менять флаг. Я думал использовать API функцию (потому что другого решения пока не вижу), но и тут я не смог найти нужную. ???
Если кто знает какую API функцию можно тут использовать, то подскажите пожалуйста.

Автор: Fantasist 12.8.2002, 05:21
GetKeyBoardLayoutList
GetKeyBoardLayoutName
GetKeyBoardLayout

Автор: cardinal 13.8.2002, 03:23
Это понятно, но а как определить, что чувак переключил раскладку клавиатуры. Как известно это можно устанавливать как угодно например Alt + Shift или Ctrl + Shift, я уже не говорю о других программах, которые позволяют переключать раскладку одним нажатием, например, правого Ctrl. При нажатии этой комбинации у тебя снизу слева значок с флагом меняется, так а как мне тоже самое воспринимать в моей программе? - пока мне это так и не пришло в голову (есть предположение что в реестре ковыряться надо :)). Если без флага, то проблем нет - считал номер, который тебе выкатывает GetKeyBoardLayoutName и допустим в зависимости от него обрабатываешь нажатие кнопки - именно так я и сделал.
Вообще - это, как говорят некоторые, косметические штучки и особо заниматься мне этим не надо, но все равно спасибо за отклик.
Если кто, что еще знает пишите...  :lookaround

Автор: rhf 13.8.2002, 09:24
WM_INPUTLANGCHANGEREQUEST

получает его само приложение, а не окно.....

Автор: Гость_Егор 2.3.2004, 16:31
Кто-нибудь знает как можно решить пример в формате string ("=3+5") c на basic! Не в режиме конструктора.

Автор: Mephisto 6.3.2004, 13:57
Гость_Егор, одна тема, один топик.

Автор: Programmer 6.3.2004, 17:49
Посмотри на
http://koding.kolpashevo.info/ >> VB6 >> api >>>

Автор: bom 7.3.2004, 21:37
Option Explicit
Private Declare Function GetKeyboardLayoutName _
Lib "user32" Alias "GetKeyboardLayoutNameA" _
(ByVal pwszKLID As String) As Long

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Dim KeybLayoutName As String, temp As Long, lang As String
KeybLayoutName = String(9, 0)
GetKeyboardLayoutName KeybLayoutName
temp = KeybLayoutName
Select Case temp
Case "00000409", "00000809"
lang = "En"
Case "00000419"
lang = "Ru"
Case "00000422"
lang = "Ukr"
Case "0000043F"
lang = "Kz"
Case "00000423"
lang = "Be"
Case "00000407"
lang = "De"
Case "0000040C"
lang = "Fr"
Case Else
lang = "не известно"
End Select
Label1 = "Раскладка вашей клавы - " & lang
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)