Как поменять раскладку клавиатуры другой программы? - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д