У меня есть приложение winform, я хочу получить информацию о текущем языке ввода в С#. У меня машина Windows 10, я выбрал корейский язык. На панели задач есть одна кнопка переключения, чтобы изменить язык ввода на английском или корейском языке, когда я выбираю корейский язык.
Следующий код всегда дает корейский язык, но он должен давать английский, когда я выбираю вход на английском языке.
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
static extern uint GetWindowThreadProcessId(IntPtr hwnd, IntPtr proccess);
[DllImport("user32.dll")]
static extern IntPtr GetKeyboardLayout(uint thread);
public Form1()
{
InitializeComponent();
IntPtr foregroundWindow = GetForegroundWindow();
uint foregroundProcess = GetWindowThreadProcessId(foregroundWindow, IntPtr.Zero);
int keyboardLayout = GetKeyboardLayout(foregroundProcess).ToInt32() & 0xFFFF;
CultureInfo info = new CultureInfo(keyboardLayout);
int keyboardLayoutId = info.KeyboardLayoutId;
string name = info.Name;
}
Есть ли другой способ получить информацию о входном языке.
Вы можете найти прикрепленное изображение для него. Я выделил A как английский вход.
Я хочу эту информацию в методе WndProc
.
Проблема Summry: Поэтому я хочу обработать случай, когда пользователь переключил язык на тип с помощью кнопки переключения, я хочу, чтобы какое-либо сообщение wndproc или событие со стороны окна получили информацию о языке, когда Пользователь переключает язык с помощью кнопки переключения.