Как определить раскладку клавиатуры (язык) в фоновом режиме? - VB

Узнай цену своей работы

Формулировка задачи:

Всем доброго дня суток! Как можно определить раскладку клавиатуры и выводить сообщение, когда программа (окно программы) неактивно? Нашел код для определения раскладки: Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Листинг программы
  1. Private Sub Form_Load()
  2. Dim KeybLayoutName As String
  3. KeybLayoutName = String(9, 0)
  4. GetKeyboardLayoutName KeybLayoutName
  5. 'Номер 409 - английская, 419 - русская
  6. MsgBox "Текущая раскладка номер " & CStr(CLng(Left$(KeybLayoutName, _
  7. InStr(1, KeybLayoutName, Chr(0)) - 1)))
  8. End Sub
Но он определяет только когда окно программы активно. Пробывал вставлять в таймер, но не помогает.
И когда каждый раз меняешь выводил сообщение о текущем расладе

Решение задачи: «Как определить раскладку клавиатуры (язык) в фоновом режиме?»

textual
Листинг программы
  1. Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
  2.  
  3. Private Sub Timer1_Timer()
  4. Dim KeybLayoutName As String
  5. KeybLayoutName = String(9, 0)
  6. GetKeyboardLayoutName KeybLayoutName
  7. 'Номер 409 - английская, 419 - русская
  8. If CStr(CLng(Left$(KeybLayoutName, InStr(1, KeybLayoutName, Chr(0)) - 1))) = "419" Then
  9. Form1.Caption = "Ru"
  10. Else
  11. Form1.Caption = "En"
  12. End If
  13.  
  14. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы