Узнать раскладку клавиатуры в программах - VB
Формулировка задачи:
Здравствуйте. Подскажите как узнать раскладку клавиатуры не в программе VB, а в других активных окнах. Находил код, но он работает только когда активно окно проекта.
Спасибо.
Решение задачи: «Узнать раскладку клавиатуры в программах»
textual
Листинг программы
Option Explicit Private Declare Function GetKeyboardLayout Lib "User32" (ByVal dwLayout As Long) As Long Private Declare Function GetWindowThreadProcessId& Lib "User32" (ByVal hWnd As Long, lpdwProcessId As Long) 'Private Declare Function GetActiveWindow Lib "user32" () As Long ' <-- активное окно очереди сообщений _вызывающего_потока_ Private Declare Function GetForegroundWindow& Lib "User32" () ' <-- "самое верхнее" окно _рабочего_стола_. Вернет 0, если рабочий стол заблокирован Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) Const HWND_TOPMOST = -1, SWP_NOSIZE = &H1, SWP_NOMOVE = &H2 'Делаем форму поверх всех окон Private Sub Form_Load() SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE End Sub Private Sub Timer1_Timer() Dim hAppWnd As Long Dim ThreadID As Long Dim ThreadLayout As Long Dim vbNullString, lng As String 'hAppWnd = GetActiveWindow() hAppWnd = GetForegroundWindow() ThreadID = GetWindowThreadProcessId(hAppWnd, ByVal 0&) ThreadLayout = GetKeyboardLayout(ThreadID) lng = Left(Trim(Str(Hex(ThreadLayout))), 3) Select Case lng Case 409: Me.Caption = "Английский" 'Выводим в заголовок информацию о языке Case 419: Me.Caption = "Русский" Case Else: Me.Caption = "Другой" End Select End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д