|
|
|
| когда-то (не помню где, может быть и на этом форуме) видел пример переключения кириллицы на латиницу при получении фокуса окном и обратном переключении при покидании этого окна с использованием API функций. сейчас не могу найти. Помогите.
Может есть и другие способы?
Если имеет значение, сейчас использую 64 разрядную Win7. Заранее спасибо! | |
|
| |
|
|
|
| Набор ф-й для раскладки
Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (pwszKLID As Any) As Long
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal HKL As String, ByVal Flags As Long) As Long
Dim bArr(500) As Byte
Function decodeString() As String
Dim i As Integer
Dim SS As String, bb As Byte
SS = ""
For i = 1 To 500
bb = bArr(i)
If bb <> 0 Then
SS = SS & Chr(bb)
Else
decodeString = SS
Exit Function
End If
Next i
decodeString = SS
Exit Function
End Function
Public Function getCurrentLanguage()
Dim z As Long
z = GetKeyboardLayoutName(bArr(1))
If z = 0 Then
getCurrentLanguage = ""
Else
getCurrentLanguage = decodeString
End If
End Function
Public Function getCurrentLanguage()
Dim z As Long
z = GetKeyboardLayoutName(bArr(1))
If z = 0 Then
getCurrentLanguage = ""
Else
getCurrentLanguage = decodeString
End If
End Function
'Переключает на русский
Public Function switchToRussian()
Dim SS As String
SS = getCurrentLanguage
If InStr(SS, "419") = 0 Then
LoadKeyboardLayout "00000419", 1
End If
End Function
'Переключает на английский
Public Function switchToEnglish()
Dim SS As String
SS = getCurrentLanguage
If InStr(SS, "409") = 0 Then
LoadKeyboardLayout "00000409", 1
End If
End Function
|
пс. На win7 не пробовал | |
|
| |
|
|
|
| спс, работает! функция getCurrentLanguage() дважды была
Дядя Федор, извини за нахальство, а переключение прописных и строчных букв также при смене окна? | |
|
| |
|
|
|
| Типа программно включить/отключить CapsLock:
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
Public Function GetCapslock() As Boolean
' Return or set the Capslock toggle.
GetCapslock = CBool(GetKeyState(vbKeyCapital) And 1)
End Function
Public Function GetNumlock() As Boolean
' Return or set the Numlock toggle.
GetNumlock = CBool(GetKeyState(vbKeyNumlock) And 1)
End Function
Public Function GetScrollLock() As Boolean
' Return or set the ScrollLock toggle.
'GetScrollLock = CBool(GetKeyState(vbKeyScrollLock) And 1)
End Function
Public Sub SetCapslock(Value As Boolean)
' Return or set the Capslock toggle.
Call SetKeyState(vbKeyCapital, Value)
End Sub
Public Sub SetNumlock(Value As Boolean)
' Return or set the Numlock toggle.
Call SetKeyState(vbKeyNumlock, Value)
End Sub
Public Sub SetScrollLock(Value As Boolean)
' Return or set the ScrollLock toggle.
'Call SetKeyState(vbKeyScrollLock, Value)
End Sub
Public Sub SetKeyState(intKey As Integer, fTurnOn As Boolean)
' Retrieve the keyboard state, set the particular
' key in which you're interested, and then set
' the entire keyboard state back the way it
' was, with the one key altered.
Dim abytBuffer(0 To 255) As Byte
GetKeyboardState abytBuffer(0)
abytBuffer(intKey) = CByte(Abs(fTurnOn))
SetKeyboardState abytBuffer(0)
End Sub
Public Sub tstcl()
SetCapslock (True)
End Sub
|
| |
|
| |
|
|
|
| может ссылку вышлете, если это где-то опубликовано. А то с гугловским переводом какие нибудь пробелы пропущу
в предыдущем сообщении слова "дважды Была " лишние, а то как то по контексту некрасиво получилось, извините | |
|
| |
|
|
|
| Много полезного в http://am.rusimport.ru/MsAccess/topic.aspx?id=476
База Refer_XP. | |
|
| |
|
|
|
| это один из примеров от Гетца и Джилберта
из VBA Developer's Handbook
http://yandex.ru/yandsearch?text=isbn%200-7821-1951-4&lr=213
http://www.mcwtech.com/Downloads/1951c04.pdf
(с) Сайбекс 1997 | |
|
| |
|
|
|
|
переключения кириллицы на латиницу при получении фокуса окном и обратном переключении при покидании этого окна с использованием API функций...
Может есть и другие способы?
|
У полей на вкладке Макет есть св-во Язык клавиатуры, которое срабатывает при получении фокуса полем... | |
|
| |
|