Как поменять раскладку клавиатуры другой программы? - Visual Basic .NET

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

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

Здравствуйте. Как поменять раскладку клавиатуры другой программы при нажатии глобальной горячей клавиши? Знаю: - как задать и отловить горячую клавишу; - как определить дескриптор программы в фокусе (GetForegroundWindow); - как узнать какие раскладки клавиатуры установлены в системе. Не знаю: как послать код раскладки клавиатуры программе в фокусе.

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

textual
Листинг программы
Option Strict On
 
Imports System.Runtime.InteropServices
 
Public Class Form1
    Private Const KLF_ACTIVATE As Long = &H1
    Private Const WM_INPUTLANGCHANGEREQUEST As Long = &H50
 
    <DllImport("user32.dll", _
    SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function PostMessage(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    End Function
 
    <DllImport("user32.dll", EntryPoint:="GetForegroundWindow")> _
    Private Shared Function GetForegroundWindow() As Long
    End Function
 
    Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim gfw As Long = GetForegroundWindow()
        PostMessage(gfw, WM_INPUTLANGCHANGEREQUEST, 0, LoadKeyboardLayout("00000419", KLF_ACTIVATE))
    End Sub
End Class

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


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

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

14   голосов , оценка 3.786 из 5
Похожие ответы