У меня есть приложение winform, я хочу получить информацию о текущем языке ввода в C #. У меня машина с 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
методе.
Краткое описание проблемы: Итак, я хочу обработать случай, когда пользователь переключил язык для ввода с помощью кнопки переключения, я хочу, чтобы любое сообщение wndproc или побочное событие окна получали информацию о языке, когда пользователь переключает язык с помощью кнопки переключения.
InputLanguage.CurrentInputLanguage
отлично работает вWndProc
.InputLanguageChanged
позволяет реагировать на изменение языка ввода. Опять же, язык ввода - на поток. Тот факт, что одно приложение использует корейский язык, не означает, что ваше использует его (пока вы не измените его для своего приложения). - person Luaan   schedule 08.02.2017InputLanguage.CurrentInputLanguage.LayoutName
. - person Luaan   schedule 08.02.2017InputLanguage.CurrentInputLanguage.LayoutName
одновременно возвращает корейский? Вы используете встроенный IME в Windows или какое-то специальное программное обеспечение? - person Luaan   schedule 08.02.2017