Как определить раскладку клавиатуры (язык) в фоновом режиме? - VB
Формулировка задачи:
Всем доброго дня суток! Как можно определить раскладку клавиатуры и выводить сообщение, когда программа (окно программы) неактивно?
Нашел код для определения раскладки:
Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Но он определяет только когда окно программы активно. Пробывал вставлять в таймер, но не помогает.
Листинг программы
- Private Sub Form_Load()
- Dim KeybLayoutName As String
- KeybLayoutName = String(9, 0)
- GetKeyboardLayoutName KeybLayoutName
- 'Номер 409 - английская, 419 - русская
- MsgBox "Текущая раскладка номер " & CStr(CLng(Left$(KeybLayoutName, _
- InStr(1, KeybLayoutName, Chr(0)) - 1)))
- End Sub
И когда каждый раз меняешь выводил сообщение о текущем расладе
Решение задачи: «Как определить раскладку клавиатуры (язык) в фоновом режиме?»
textual
Листинг программы
- Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
- Private Sub Timer1_Timer()
- Dim KeybLayoutName As String
- KeybLayoutName = String(9, 0)
- GetKeyboardLayoutName KeybLayoutName
- 'Номер 409 - английская, 419 - русская
- If CStr(CLng(Left$(KeybLayoutName, InStr(1, KeybLayoutName, Chr(0)) - 1))) = "419" Then
- Form1.Caption = "Ru"
- Else
- Form1.Caption = "En"
- End If
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д